Important: Gotchas
See Also: 3D Programming | Gotchas
gluPerspective?? Is Intertwined better ??
Used to interleave values in an array of values. This lets data like the following be used in gl*Pointer(); funcs
GLfloat vals[] = {
// r g b x y z
1.0, 0.0, 1.0, 100.0, 200.0, 300.0,
1.0, 0.0, 1.0, 100.0, 200.0, 300.0,
};
// GL_FRONT, GL_BACK, GL_FRONT_AND_BACK
// GL_FILL, GL_LINE, GL_POINT
glPolygonMode(GL_FRONT, GL_FILL);
glPolygonMode(GL_BACK, GL_LINE);
| # | Name | More |
|---|---|---|
| 1 | Setting Up An OpenGL Window | |
| 02 | Your First Polygon | |
| 3 | Adding Color | |
| 4 | Rotation | |
| 5 | 3D Shapes | |
| 6 | Texture Mapping | |
| 7 | Texture Filters, Lighting & Keyboard Control | |
| 8 | Blending | |
| 9 | Moving Bitmaps In 3D Space | |
| 10 | Loading And Moving Through A 3D World | |
| 11 | Flag Effect (Waving Texture) | |
| 12 | Display Lists | |
| 13 | Bitmap Fonts | Font |
| 14 | Outline Fonts | Font |
| 15 | Texture Mapped Outline Fonts | Font |
| 16 | Cool Looking Fog | |
| 17 | 2D Texture Font | Font |
| 18 | Quadrics | |
| 19 | Particle Engine Using Triangle Strips | |
| 20 | Masking | |
| 21 | Lines, Antialiasing, Timing, Ortho View And Simple Sounds | |
| 22 | Bump-Mapping, Multi-Texturing & Extensions | |
| 23 | Sphere Mapping Quadrics In OpenGL | |
| 24 | Tokens, Extensions, Scissor Testing And TGA Loading | |
| 25 | Morphing & Loading Objects From A File | |
| 26 | Clipping & Reflections Using The Stencil Buffer | |
| 27 | Shadows | |
| 28 | Bezier Patches / Fullscreen Fix | |
| 29 | Blitter Function, RAW Texture Loading | |
| 30 | Collision Detection | |
| 31 | Model Loading | |
| 32 | Picking, Alpha Blending, Alpha Testing, Sorting | |
| 33 | Loading Compressed And Uncompressed TGA's | |
| 34 | Beautiful Landscapes By Means Of Height Mapping | |
| 35 | Playing AVI Files In OpenGL | |
| 36 | Radial Blur & Rendering To A Texture | |
| 37 | Cel-Shading | |
| 38 | Loading Textures From A Resource File & Texturing Triangles | |
| 39 | Introduction to Physical Simulations | |
| 40 | Rope Physics | |
| 41 | Volumetric Fog & IPicture Image Loading | |
| 42 | Multiple Viewports | |
| 43 | FreeType Fonts in OpenGL | Font |
| 44 | 3D Lens Flare With Occlusion Testing | |
| 45 | Vertex Buffer Objects | |
| 46 | Fullscreen AntiAliasing | |
| 47 | CG Vertex Shader | |
| 48 | ArcBall Rotation |
| void glBegin( GLenum mode); |
GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON Use only these in it: glVertex*(); glColor*(); glIndex*(); glNormal*(); glTexCoord*(); glMultiTexCoord*ARB(); glEdgeFlag*(); glMaterial*(); glArrayElement(); glEvalCoord*() glEvalPoint*(); glCallList(); glCallLists(); |
| ??? void glCallLists( GLsizei n, GLenum type, GLvoid *lists); | |
| void glClear( GLbitfield mask); | GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT GL_ACCUM_BUFFER_BIT GL_STENCIL_BUFFER_BIT |
| void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); | |
| void glColor{34}{sfid}( TYPE red, TYPE green, TYPE blue {, TYPE alpha}); | |
| void glColor{34}{sfid}v( TYPE *v); | |
| ??? glCopyTexImage() | |
| ??? glCopyTexSubImage() | |
| void glCullFace( GLenum mode); | GL_FRONT GL_BACK GL_FRONT_AND_BACK |
| ??? void glDeleteLists(); | |
| void glDisable( GLenum cap); | See glEnable(); |
| void glEdgeFlag[v]( GLboolean [*]flag); | GL_TRUE GL_FALSE |
| void glEnable( GLenum cap); | GL_BLEND GL_DEPTH_TEST GL_FOG GL_LINE_STIPPLE GL_POLYGON_STIPPLE … |
| void glEnd(); | |
| void glFinish(); | Like glFlush(); but waits until drawing is done. |
| void glFlush(); | Force commands to start executing (like XFlush();) |
| void glFrontFace( GLenum front); | GL_CCW GL_CW |
| ??? GLuint glGenLists( GLsizei range); | |
| void glGetBooleanv( GLenum pname, TYPE *vVals); void glGetIntegerv( GLenum pname, TYPE *vVals); void glGetFloatv( GLenum pname, TYPE *vVals); void glGetDoublev( GLenum pname, TYPE *vVals); void glGetPointerv( GLenum pname, TYPE *vVals); |
GL_CURRENT_COLOR … |
| ??? glGetTexImage() | |
| void glLineStipple( GLint scaleFactor, GLushort pattern); | glEnable(GL_LINE_STIPPLE); |
| void glLineWidth( GLfloat size); | |
| ??? void glListBase(); | |
| void glMatrixMode( GLenum mode); | GL_PROJECTION … |
| void glNormal3{bsidf}[v]( TYPE [*]vals); | b, s, and i versions scale paras t0 [-1.0, 1.0] glEnable(GL_NORMALIZE); glEnable(GL_RESCALE_NORMALIZE); |
| ??? void glPixelStore | ??? GL_UNPACK* |
| void glPointSize( GLfloat size); | |
| void glPolygonMode( GLenum face, GLenum mode); | face: GL_FRONT GL_BACK GL_FRONT_AND_BACK mode: GL_FILL GL_LINE GL_POINT |
| void glPolygonStipple( Glubyte *mask); | 32 ushorts glEnable(GL_POLYGON_STIPPLE); |
| void glPopAttrib(); | |
| void glPopClientAttrib(); | |
| void glPushAttrib( GLbitfield mask); | GL_ACCUM_BUFFER_BIT GL_ALL_ATTRIB_BITS … |
| void glPushClientAttrib( GLbitfield mask); | GL_CLIENT_PIXEL_STORE_BIT GL_CLIENT_VERTEX_ARRAY_BIT GL_ALL_CLIENT_ATTRIB_BITS |
| void glRect{sfid}( TYPE x1, TYPE y1, TYPE x2, TYPE y2); | |
| void glRect{sfid}v( TYPE* v1, TYPE *v2); | |
| ??? glTexImage() | |
| ??? glTexSubImage() | |
| void glViewPort( GLint x, GLinty, GLsizei width, GLsizei height); | Clip box drawing will occur in (doesn't affect clearing though). |
| void glVertex{234}{sifd}[v]( TYPE [*]coords); |
| void glBitmap( GLsizei width, GLsizei height, GLfloat xbo, GLfloat ybo, GLfloat xbi, GLfloat ybi, GLubyte *bitmap); | (xbo,ybo) bitmap origin (this is drawn at the raster position) (xbi,ybi) raster position increments added after this draw |
| void glCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum buffer); | GL_COLOR GL_STENCIL GL_DEPTH ! glReadPixels() ! glDrawPixels() |
| void glDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); | format and type info, see glReadPixels() at current Raster position !! glDrawBuffer() |
| void glPixelTransfer{if}( GLenum pname, TYPE param); | pname: GL_MAP_COLOR GL_MAP_STENCIL GL_INDEX_SHIFT … |
| void glPixelMap{ui us f}v( GLenum map, GLint mapsize, TYPE *values); | |
| void glPixelStore{if}( GLenum pname, TYPE param); | pname: GL_UNPACK_SWAP_BYTES GL_PACK_SWAP_BYTES GL_UNPACK_LDB_FIRST GL_PACK_LSB_FIRST GL_UNPACK_ROW_LENGTH GL_PACK_ROW_LENGTH GL_UNPACK_SKIP_ROWS GL_PACK_SKIP_ROWS … |
| void glPixelZoom( GLfloat xZoom, GLfloat yZoom); | |
| void glRasterPos{234}{sifd}[v]( TYPE [*]coordsXYZW); | Lower left of next draw glGetFloatv -> GL_CURRENT_RASTER_POSITION glGetBooleanv -> GL_CURRENT_RASTER_POSITION_VALID !! Locks in color from last glColor*() |
| void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); | format: GL_COLOR_INDEX GL_RGB GL_RGBA GL_BGR GL_BGRA GL_RED GL_GREEN GL_BLUE GL_ALPHA GL_LUMINANCE GL_LUMINANCE_ALPHA GLSTENCIL_INDEX GL_DEPTH_COMPONENT type: GL_UNSIGNED_BYTE GL_BYTE GL_BITMAP GL_UNSIGNED_SHORT GL_SHORT GL_UNSIGNED_INT GL_INT GL_FLOAT GL_UNSIGNED_BYTE_3_3_2 GL_UNSIGNED_BYTE_2_3_3_REV GL_UNSIGNED_SHORT_5_6_5 GL_UNSIGNED_SHORT_5_6_5_REV GL_UNSIGNED_SHORT_4_4_4_4 GL_UNSIGNED_SHORT_4_4_4_4_REV … See also: glReadBuffer(); |
| void glArrayElement( GLint index); | Selects data at [index] from all active Arrays |
| void glColorPointer( GLint size, GLenum type, GLsizei stride, GLvoid* pointer); | size: GL_BYTE GL_UNSIGNED_BYTE GL_SHORT GL_UNSIGNED_SHORT GL_INT GL_UNSIGNED_INT GL_FLOAT GL_DOUBLE |
| void glDisableClientState( GLenum array); | See glEnableClientState(); |
| void glDrawArrays( GLenum mode, GLint first, GLsizei count); | |
| void glDrawElements( GLenum mode, GLsizei count, GLenum type, void *indices); | mode: GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON type: UNSIGNED_BYTE UNSIGNED_SHORT UNSIGNED_INT |
| void glDrawRangeElements( GLenum mode, GLint start, GLint end, GLsizei count, GLenum type, void *indices ); | start and end let you just do a subset of the values. See: glDrawElements(); for other paras. |
| void glEdgeFlagPointer( GLsizei stride, GLvoid* pointer); | |
| void glEnableClientState( GLenum array); | GL_VERTEX_ARRAY GL_COLOR_ARRAY GL_INDEX_ARRAY GL_NORMAL_ARRAY GL_TEXTURE_COORD_ARRAY GL_EDGE_FLAG_ARRAY |
| void glIndexPointer( GLenum type, GLsizei stride, GLvoid* pointer); | size: GL_BYTE GL_UNSIGNED_BYTE GL_SHORT GL_INT GL_FLOAT GL_DOUBLE |
| ??? void glInterleavedArrays(); | Complex, uses predefined 'structures' |
| void glINormalPointer( GLenum type, GLsizei stride, GLvoid* pointer); | size: GL_BYTE GL_SHORT GL_INT GL_FLOAT GL_DOUBLE |
| void glTexCoordPointer( GLint size, GLenum type, GLsizei stride, GLvoid* pointer); | size: GL_SHORT GL_INT GL_FLOAT GL_DOUBLE |
| void glVertexPointer( GLint size, GLenum type, GLsizei stride, GLvoid* pointer); | size: GL_SHORT GL_INT GL_FLOAT GL_DOUBLE |