Help end child hunger
Nov 132012
 

OpenGL renders to framebuffers. By default OpenGL renders to screen, the default framebuffer that commonly contains a color and a depth buffer. This is great for many purposes where a pipeline consists of a single pass, a pass being a sequence of shaders. For instance a simple pass can have only a vertex and a fragment shader.

For more complex graphical effects or techniques, such as shadows or deferred rendering, multiple passes are often required, where the outputs of a pass are inputs of the following pass, for instance as textures. In this context, instead of rendering to screen, and then copying the result to a texture it would be much nicer to render to texture directly. The figure shows a two pass pipeline, where the first produces three textures that are used in the second pass to compose the final image. This is one of the advantages of framebuffer objects: we can render to multiple outputs in a single pass.

Besides, rendering to screen requires the outputs to be of a displayable format, which is not always the case in a multipass pipeline. Sometimes the textures produced by a pass need to have a floating point format which does not translate directly to colors, for instance the speed of a particle in meters per second.

In this short tutorial we will see how a framebuffer object can be created, and used with shaders. A demo is also provided with full source code, and a VS 2010 solution.

Oct 102012
 

This course is the next installment in the established series of SIGGRAPH courses on real-time rendering. It presents the best graphics practices and research from the game-development community and provides practical and production-proven algorithms. The focus of the course is on the intersection between the game-development community and state-of-the-art 3D graphics research, and the potential for cross-pollination of knowledge in future games and other interactive applications.

Slides are available in here.

Jul 102012
 

I’ve been working for some time with wxWidgets. The only thing I’ve missed, regarding OpenGL, is the ability to define my own OpenGL context, in particular Core profile and Debug contexts.

To be able to set a context we, or the toolkit we’re using, must use the wglCreateContextAttribsARB function, as defined in the WGL_ARB_create_context extension. As it happens, wxWidgets uses wglCreateContext, hence no OpenGL context can be explicitly defined using the provided source code for the current release (2.9.4).

As OpenGL context setting is not yet in the roadmap for future releases of wxWidgets, nor is it in its Todo List, I’m sharing a solution for this issue.

The solution is for the Windows platform, but other platforms should be as easy to change as well.

Note: I make no claim regarding the quality of the solution, it worked for me, and that’s all I claim. If anyone knows of a better way of doing this comments are most welcome, as they may prove useful for other readers (and me as well 🙂 ).

Continue reading »

Jul 092012
 

The University of California UC Davis, has an excellent introductory course on Computer Graphics (21 lectures, close to an hour each), available through iTunes University. The course is given by Kenneth Joy, who does an amazing job, providing very clear and easy to follow lectures.

The course objectives are described in here.