Name SUN_vertex Name Strings GL_SUN_vertex Contact Jack Middleton, Sun (Jack.Middleton 'at' eng.sun.com) Status Shipping Version $Date: 1999/12/28 01:40:37 $ $Revision: 1.5 $ SUN Date: 99/07/01 10:29:03 Revision: 1.7 Number 166 Dependencies SUN_triangle_list affects part of the definition of this extension Overview This extension provides new GL commands to specify vertex data such as color and normal along with the vertex in one single GL command in order to minimize the overhead in making GL commands for each set of vertex data. New Procedures and Functions void Color4ubVertex2fSUN(ubyte r, ubyte g, ubyte b, ubyte a, float x, float y); void Color4ubVertex2fvSUN(const ubyte *c, const float *v); void Color4ubVertex3fSUN(ubyte r, ubyte g, ubyte b, ubyte a, float x, float y, float z); void Color4ubVertex3fvSUN(const ubyte *c, const float *v); void Color3fVertex3fSUN(float r, float g, float b, float x, float y, float z); void Color3fVertex3fvSUN(const float *c, const float *v); void Normal3fVertex3fSUN(float nx, float ny, float nz, float x, float y, float z); void Normal3fVertex3fvSUN(const float *n, const float *v); void Color4fNormal3fVertex3fSUN(float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void Color4fNormal3fVertex3fvSUN(const float *c, const float *n, const float *v); void TexCoord2fVertex3fSUN(float s, float t, float x, float y, float z); void TexCoord2fVertex3fvSUN(const float *tc, const float *v); void TexCoord4fVertex4fSUN(float s, float t, float p, float q, float x, float y, float z, float w); void TexCoord4fVertex4fvSUN(const float *tc, const float *v); void TexCoord2fColor4ubVertex3fSUN(float s, float t, ubyte r, ubyte g, ubyte b, ubyte a, float x, float y, float z); void TexCoord2fColor4ubVertex3fvSUN(const float *tc, const ubyte *c, const float *v); void TexCoord2fColor3fVertex3fSUN(float s, float t, float r, float g, float b, float x, float y, float z); void TexCoord2fColor3fVertex3fvSUN(const float *tc, const float *c, const float *v); void TexCoord2fNormal3fVertex3fSUN(float s, float t, float nx, float ny, float nz, float x, float y, float z); void TexCoord2fNormal3fVertex3fvSUN(const float *tc, const float *n, const float *v); void TexCoord2fColor4fNormal3fVertex3fSUN(float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void TexCoord2fColor4fNormal3fVertex3fvSUN(const float *tc, const float *c, const float *n, const float *v); void TexCoord4fColor4fNormal3fVertex4fSUN(float s, float t, float p, float q, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z, float w); void TexCoord4fColor4fNormal3fVertex4fvSUN(const float *tc, const float *c, const float *n, const float *v); void ReplacementCodeuiVertex3fSUN(uint rc, float x, float y, float z); void ReplacementCodeuiVertex3fvSUN(const uint *rc, const float *v); void ReplacementCodeuiColor4ubVertex3fSUN(uint rc, ubyte r, ubyte g, ubyte b, ubyte a, float x, float y, float z); void ReplacementCodeuiColor4ubVertex3fvSUN(const uint *rc, const ubyte *c, const float *v); void ReplacementCodeuiColor3fVertex3fSUN(uint rc, float r, float g, float b, float x, float y, float z); void ReplacementCodeuiColor3fVertex3fvSUN(const uint *rc, const float *c, const float *v); void ReplacementCodeuiNormal3fVertex3fSUN(uint rc, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiNormal3fVertex3fvSUN(const uint *rc, const float *n, const float *v); void ReplacementCodeuiColor4fNormal3fVertex3fSUN(uint rc, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiColor4fNormal3fVertex3fvSUN(const uint *rc, const float *c, const float *n, const float *v); void ReplacementCodeuiTexCoord2fVertex3fSUN(uint rc, float s, float t, float x, float y, float z); void ReplacementCodeuiTexCoord2fVertex3fvSUN(const uint *rc, const float *tc, const float *v); void ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint rc, float s, float t, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const uint *rc, const float *tc, const float *n, const float *v); void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint rc, float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( const uint *rc, const float *tc, const float *c, const float *n, const float *v); New Tokens None Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) The following paragraph will be added to the end of section 2.7 Vertex Specification. Multiple vertex data can also be specified in one single GL command along with the vertex using the following GL commands. The order of processing is always first texture coordinates, then colors, then normals, and vertex coordinates last. void Color4ubVertex2fSUN(ubyte r, ubyte g, ubyte b, ubyte a, float x, float y); void Color4ubVertex2fvSUN(const ubyte *c, const float *v); void Color4ubVertex3fSUN(ubyte r, ubyte g, ubyte b, ubyte a, float x, float y, float z); void Color4ubVertex3fvSUN(const ubyte *c, const float *v); void Color3fVertex3fSUN(float r, float g, float b, float x, float y, float z); void Color3fVertex3fvSUN(const float *c, const float *v); void Normal3fVertex3fSUN(float nx, float ny, float nz, float x, float y, float z); void Normal3fVertex3fvSUN(const float *n, const float *v); void Color4fNormal3fVertex3fSUN(float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void Color4fNormal3fVertex3fvSUN(const float *n, const float *v); void TexCoord2fVertex3fSUN(float s, float t, float x, float y, float z); void TexCoord2fVertex3fvSUN(const float *tc, const float *v); void TexCoord4fVertex4fSUN(float s, float t, float p, float q, float x, float y, float z, float w); void TexCoord4fVertex4fvSUN(const float *tc, const float *v); void TexCoord2fColor4ubVertex3fSUN(float s, float t, ubyte r, ubyte g, ubyte b, ubyte a, float x, float y, float z); void TexCoord2fColor4ubVertex3fvSUN(const float *tc, const ubyte *c, const float *v); void TexCoord2fColor3fVertex3fSUN(float s, float t, float r, float g, float b, float x, float y, float z); void TexCoord2fColor3fVertex3fvSUN(const float *tc, const float *c, const float *v); void TexCoord2fNormal3fVertex3fSUN(float s, float t, float nx, float ny, float nz, float x, float y, float z); void TexCoord2fNormal3fVertex3fvSUN(const float *tc, const float *n, const float *v); void TexCoord2fColor4fNormal3fVertex3fSUN(float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void TexCoord2fColor4fNormal3fVertex3fvSUN(const float *tc, const float *c, const float *n, const float *v); void TexCoord4fColor4fNormal3fVertex4fSUN(float s, float t, float p, float q, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z, float w); void TexCoord4fColor4fNormal3fVertex4fvSUN(const float *tc, const float *c, const float *n, const float *v); void ReplacementCodeuiVertex3fSUN(uint rc, float x, float y, float z); void ReplacementCodeuiVertex3fvSUN(const uint *rc, const float *v); void ReplacementCodeuiColor4ubVertex3fSUN(uint rc, ubyte r, ubyte g, ubyte b, ubyte a, float x, float y, float z); void ReplacementCodeuiColor4ubVertex3fvSUN(const uint *rc, const ubyte *c, const float *v); void ReplacementCodeuiColor3fVertex3fSUN(uint rc, float r, float g, float b, float x, float y, float z); void ReplacementCodeuiColor3fVertex3fvSUN(const uint *rc, const float *c, const float *v); void ReplacementCodeuiNormal3fVertex3fSUN(uint rc, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiNormal3fVertex3fvSUN(const uint *rc, const float *n, const float *v); void ReplacementCodeuiColor4fNormal3fVertex3fSUN(uint rc, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiColor4fNormal3fVertex3fvSUN(const uint *rc, const float *c, const float *n, const float *v); void ReplacementCodeuiTexCoord2fVertex3fSUN(uint rc, float s, float t, float x, float y, float z); void ReplacementCodeuiTexCoord2fVertex3fvSUN(const uint *rc, const float *tc, const float *v); void ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint rc, float s, float t, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const uint *rc, const float *tc, const float *n, const float *v); void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint rc, float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z); void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( const uint *rc, const float *tc, const float *c, const float *n, const float *v); Additions to Chapter 3 of the 1.2 Specification (Rasterization) None Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and the Frame Buffer) None Additions to Chapter 5 of the 1.2 Specification (Special Functions) None Additions to Chapter 6 of the 1.2 Specification (State and State Requests) None Additions to the GLX / WGL / AGL Specifications None GLX Protocol No new GLX protocol is added. The vertex components in the new GL commands will be sent to remote servers using the regular GL protocols as if the vertex components are passed in using the regular GL commands. Dependencies on SUN_triangle_list If SUN_triangle_list is supported, those GL commands which include a replacement code will be supported as well. Otherwise commands which include replacement codes are not supported. Errors None New State None New Implementation Dependent State None