Author archives: Mike
A Good Day
Written by
on
in
Snaking.
Opaque, transparent and select (with colours, not select mode) rendering are now all working in the new renderer. That was more than I was expecting to get done today. I should likely work on occlusion/frustum queries next (should be fairly easy, Shapes already have queries to check against the frustum and/or do occlusion queries). The ...
Scene sorting with numpy...
Written by
on
in
Snaking.
You often want to be able to calculate the eye-space coordinate of a given model-space coordinate. One of the most common reasons is to calculate the distance to a given object from the camera (depth in the scene) so that you can do sorting of the scenegraph.
Why would you want to sort a scenegraph? ...
World Plone Day is tomorrow...
Written by
on
in
Snaking.
There's a Toronto event as part of World Plone Day that I'm intending to attend (free registration is available off that link). Interesting to see the Toronto Plone group organizing something like this. They also have regular meetings for those who are aren't able to attend the WPD day-time event.
Years in, it's easy to forget the details...
Written by
on
in
Snaking.
Sometimes after a decade or so of working with a technology you become so accustomed to the low-level operation you just stop thinking about how it actually works. Writing the "legacy free" version of OpenGLContext is making me think again about how the whole edifice of computer graphics works.
Take, for example, the "normal matrix". ...
Path Matrix Caching
Written by
on
in
Snaking.
As mentioned many times already, OpenGL 3.1 is eliminating the matrix manipulation code from the OpenGL API. OpenGLContext/PyVRML97 already had a matrix-calculation mechanism, but it wasn't used for rendering anything, it was just used for certain bookkeeping operations.
To make it practical to use the matrices for rendering they need to be cached. I'm eventually ...
Spike test works...
Written by
on
in
Snaking.
Set up a little spike test that overrides the matrix setup for the projection and model-view matrices to be identity values. The test then uses visitor.find() to construct paths to all Rendering node-types in a scenegraph and sets up the matrices with a call to glLoadMatrix on my calculated matrices and then renders the Rendering ...
Debug Mode Rendering (or, What you should always have)
Written by
on
in
Snaking.
Spent rather more time this afternoon than I'd intended working on fixing font rendering. It was just a little spike test using Pygame to create a TextureAtlas and then rendering the atlas texture onto a quad to be sure it showed up. Except that it didn't.
Which brings me to the point of this post: ...
Texture Atlases for Fun and Profit...
Written by
on
in
Snaking.
I'm guessing that everyone who's ever taken "intro to not particularly slow computer graphics" has written their own texture atlas implementation, so hey, I should too :) . Texture atlases are collections of large numbers of small textures which are packed into a single, larger texture with some book-keeping metadata to allow the GL to ...
Peeling back layers...
Written by
on
in
Snaking.
Began working on more flags to peel back some of the ease-of-use layers in PyOpenGL to recoup performance. List/tuple array-types now respect the ERROR_ON_COPY flag (effectively disabling list/tuple support when the flag is activated) and there is a STORE_POINTERS flag, which when False (with ERROR_ON_COPY True) will disable wrapper operations storePointer mechanism. That's one stage ...
Videos are up...
Written by
on
in
Snaking.
Videos of my two talks at PyCon are both up now. Introduction to Python Profiling is probably the better of the two for the general programming audience. A Whole new OpenGL is only going to be of interest to people who actually want to work with OpenGL (in Python) or are just curious about how ...