HP c8000 manual Regular primitive data

Page 57

programming hints

OpenGL performance hints

... many more vertices...

glEnd();

than this:

glBegin(GL_TRIANGLES); glColor3f(1,2,3); glVertex3f(...);

... many more vertices...

glEnd();

For performance efficiency avoid glMaterial state changes, especially within a glBegin/glEnd pair.

regular primitive data

If the vertex data that you give to a display list is regular (that is, every vertex has the same data associated with it), it is possible for the display list to optimize the primitive much more effectively than if the data is not regular.

For example if you wanted to give only a single normal for each face in a GL_TRIANGLES primitive, the most intuitive way to get the best performance would look like this:

glBegin(GL_TRIANGLES); glNormal3fv(&v1);

glVertex3fv(&p1); glVertex3fv(&p2); glVertex3fv(&p3); glNormal3fv(&v2);

glVertex3fv(&p4); glVertex3fv(&p5); glVertex3fv(&p6);

...

glEnd();

In immediate mode, this would give you the best performance. However, if you are putting these calls into a display list, you will get much better performance by duplicating the normal for each vertex, thereby giving regular data to the display list:

glBegin(GL_TRIANGLES); glNormal3fv(&v1); glVertex3fv(&p1); glNormal3fv(&v1); glVertex3fv(&p2); glNormal3fv(&v1); glVertex3fv(&p3); glNormal3fv(&v2); glVertex3fv(&p4);

Chapter 5

55

Image 57
Contents OpenGL Implementation Guide Legal Notices Contents Installation and setup Programming hints Contents Overview of OpenGL OpenGL Reference Manual IntroductionOpenGL product Hp’s implementation of OpenGLHp’s implementation of the OpenGL libraries Supported operating systems Supported graphics devicesVisual Table for HP Visualize fxe Supported visualsVisual Table for ATI Fire GL T2/X1/X3 Visual support for other graphics devices Stereo Visual Support for HP Fire GL-UXSigchld and the GRM daemon Buffer sharing between multiple processes and threadsBit programming SLS support Sample 64-bit compile and link for 11.x onlyOpenGL Utilities Library GLU Standard OpenGL productInput and output routines OpenGL extensions for the X Window system GLXOpenGL product Mixing of OpenGL and Xlib Gamma correction Visibility test extensions OpenGL extensionsOcclusion extension Occlusion culling code fragmentsEnumerated Types for Occlusion GLHPsupersample extension Rendering details Default visualsEXP and EXP2 fogging Bow-tie quadrilateralsIndex mode dithering Decomposition of concave quadrilateralsVertices outside of a begin/end pair Environment variables New environment variables as of release Switches to the faster double buffering method Installation and setup Installation and setup Verification instructions Is your system software preloaded with instant ignition?Verify that OpenGL is on your workstation Install OpenGL Installing OpenGLOpenGL Development Environment Filesets for 11.0 Check log file Verify the product OpenGL file structure 64-bit libraries are in a subdirectory OpenGL file structure Chapter Running OpenGL programs Virtual GLX VGL mode Visual support for the VGL modeSpecial considerations Bool hpglXDisplayIsVGLDisplay *dpy, int screen Running hps implementation of the OpenGL stereo application Running hps implementation of the OpenGL stereo application Running OpenGL programs Compiling and linking programs Subdirectory This Directory Contains OverviewIncluding header files Linking shared libraries Compiling 32-bit and 64-bit applications for OpenGL OpenGL procedure calls Programming hints Programming hints OpenGL correctness hints 4D valuesTexture coordinates OpenGL performance hints Glcompileandexecute modeDisplay list performance Geometric primitivesDraw array set extensions State changes and their effects on display lists TexturesRegular primitive data Selection performance Texture downloading performanceState change Optimization of lighting Occlusion cullingHigh frame rate applications Rescaling normals OpenGL performance hints
Related manuals
Manual 27 pages 63.95 Kb Manual 8 pages 32.71 Kb Manual 89 pages 28.35 Kb