programming hints

OpenGL performance hints

glNormal3fv(&v2); glVertex3fv(&p5); glNormal3fv(&v2); glVertex3fv(&p6);

...

glEnd();

The reason this is faster is the display list can optimize this type of primitive into a single, very efficient structure. The small cost of adding extra data is offset by this optimization.

Performance is increased by maximizing the number of vertices per Begin/End pair. If your vertex data in memory is organized in a linear, rather than a random manner, performance is enhanced by taking advantage of vertex pre-fetch. It is most efficient to use 32-bit float data, which avoids the need to convert data.

texture downloading performance

This section includes some helpful hints for improving the performance of your program when downloading textures.

If you are downloading MIP maps, always begin with the base level (level 0) first.

If it is possible, you should use texture objects to store and bind textures.

If you are doing dynamic downloading of texture maps, you will get better performance by replacing the current texture with a texture of the same width, height, border size, and format. This should be done instead of deleting the old texture and creating a new one.

selection performance

To increase the performance of selection (glRenderMode GL_SELECTION) it is recommended that the following capabilities be disabled before entering the selection mode.

GL_TEXTURE_*

GL_TEXTURE_GEN_*

GL_FOG

GL_LIGHTING

56

Chapter 5