1Name 2 3 SUN_vertex 4 5Name Strings 6 7 GL_SUN_vertex 8 9Contact 10 11 Jack Middleton, Sun (Jack.Middleton 'at' eng.sun.com) 12 13Status 14 15 Shipping 16 17Version 18 19 $Date: 1999/12/28 01:40:37 $ $Revision: 1.5 $ 20 SUN Date: 99/07/01 10:29:03 Revision: 1.7 21 22Number 23 24 166 25 26Dependencies 27 28 SUN_triangle_list affects part of the definition of this extension 29 30Overview 31 32 This extension provides new GL commands to specify vertex data such as 33 color and normal along with the vertex in one single GL command in order to 34 minimize the overhead in making GL commands for each set of vertex data. 35 36New Procedures and Functions 37 38 void Color4ubVertex2fSUN(ubyte r, ubyte g, ubyte b, ubyte a, 39 float x, float y); 40 void Color4ubVertex2fvSUN(const ubyte *c, const float *v); 41 42 void Color4ubVertex3fSUN(ubyte r, ubyte g, ubyte b, ubyte a, 43 float x, float y, float z); 44 void Color4ubVertex3fvSUN(const ubyte *c, const float *v); 45 46 void Color3fVertex3fSUN(float r, float g, float b, 47 float x, float y, float z); 48 void Color3fVertex3fvSUN(const float *c, const float *v); 49 50 void Normal3fVertex3fSUN(float nx, float ny, float nz, 51 float x, float y, float z); 52 void Normal3fVertex3fvSUN(const float *n, const float *v); 53 54 void Color4fNormal3fVertex3fSUN(float r, float g, float b, float a, 55 float nx, float ny, float nz, 56 float x, float y, float z); 57 void Color4fNormal3fVertex3fvSUN(const float *c, const float *n, const float 58*v); 59 60 void TexCoord2fVertex3fSUN(float s, float t, float x, float y, float z); 61 void TexCoord2fVertex3fvSUN(const float *tc, const float *v); 62 63 void TexCoord4fVertex4fSUN(float s, float t, float p, float q, 64 float x, float y, float z, float w); 65 void TexCoord4fVertex4fvSUN(const float *tc, const float *v); 66 67 void TexCoord2fColor4ubVertex3fSUN(float s, float t, 68 ubyte r, ubyte g, ubyte b, ubyte a, 69 float x, float y, float z); 70 void TexCoord2fColor4ubVertex3fvSUN(const float *tc, const ubyte *c, const 71float *v); 72 73 void TexCoord2fColor3fVertex3fSUN(float s, float t, 74 float r, float g, float b, 75 float x, float y, float z); 76 void TexCoord2fColor3fVertex3fvSUN(const float *tc, const float *c, const 77float *v); 78 79 void TexCoord2fNormal3fVertex3fSUN(float s, float t, 80 float nx, float ny, float nz, 81 float x, float y, float z); 82 void TexCoord2fNormal3fVertex3fvSUN(const float *tc, const float *n, const 83float *v); 84 85 void TexCoord2fColor4fNormal3fVertex3fSUN(float s, float t, 86 float r, float g, float b, float a, 87 float nx, float ny, float nz, 88 float x, float y, float z); 89 void TexCoord2fColor4fNormal3fVertex3fvSUN(const float *tc, const float *c, 90 const float *n, const float *v); 91 92 void TexCoord4fColor4fNormal3fVertex4fSUN(float s, float t, float p, float 93q, 94 float r, float g, float b, float a, 95 float nx, float ny, float nz, 96 float x, float y, float z, float w); 97 void TexCoord4fColor4fNormal3fVertex4fvSUN(const float *tc, const float *c, 98 const float *n, const float *v); 99 100 void ReplacementCodeuiVertex3fSUN(uint rc, float x, float y, float z); 101 void ReplacementCodeuiVertex3fvSUN(const uint *rc, const float *v); 102 103 void ReplacementCodeuiColor4ubVertex3fSUN(uint rc, 104 ubyte r, ubyte g, ubyte b, ubyte a, 105 float x, float y, float z); 106 void ReplacementCodeuiColor4ubVertex3fvSUN(const uint *rc, const ubyte *c, 107const float *v); 108 109 void ReplacementCodeuiColor3fVertex3fSUN(uint rc, 110 float r, float g, float b, 111 float x, float y, float z); 112 void ReplacementCodeuiColor3fVertex3fvSUN(const uint *rc, const float *c, 113const float *v); 114 115 void ReplacementCodeuiNormal3fVertex3fSUN(uint rc, 116 float nx, float ny, float nz, 117 float x, float y, float z); 118 void ReplacementCodeuiNormal3fVertex3fvSUN(const uint *rc, const float *n, 119const float *v); 120 121 void ReplacementCodeuiColor4fNormal3fVertex3fSUN(uint rc, 122 float r, float g, float b, float a, 123 float nx, float ny, float nz, 124 float x, float y, float z); 125 void ReplacementCodeuiColor4fNormal3fVertex3fvSUN(const uint *rc, const 126float *c, 127 const float *n, const 128float *v); 129 130 void ReplacementCodeuiTexCoord2fVertex3fSUN(uint rc, 131 float s, float t, 132 float x, float y, float z); 133 void ReplacementCodeuiTexCoord2fVertex3fvSUN(const uint *rc, const float 134*tc, const float *v); 135 136 void ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint rc, 137 float s, float t, 138 float nx, float ny, float nz, 139 float x, float y, float z); 140 void ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const uint *rc, const 141float *tc, 142 const float *n, const 143float *v); 144 145 void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint rc, 146 float s, float t, 147 float r, float g, float b, float a, 148 float nx, float ny, float nz, 149 float x, float y, float z); 150 void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( 151 const uint *rc, const float *tc, const 152float *c, 153 const float *n, const float *v); 154 155 156New Tokens 157 158 None 159 160 161Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation) 162 163 The following paragraph will be added to the end of section 2.7 164 Vertex Specification. 165 166 Multiple vertex data can also be specified in one single GL command 167 along with the vertex using the following GL commands. The order 168 of processing is always first texture coordinates, then colors, then 169normals, 170 and vertex coordinates last. 171 172 void Color4ubVertex2fSUN(ubyte r, ubyte g, ubyte b, ubyte a, 173 float x, float y); 174 void Color4ubVertex2fvSUN(const ubyte *c, const float *v); 175 176 void Color4ubVertex3fSUN(ubyte r, ubyte g, ubyte b, ubyte a, 177 float x, float y, float z); 178 void Color4ubVertex3fvSUN(const ubyte *c, const float *v); 179 180 void Color3fVertex3fSUN(float r, float g, float b, 181 float x, float y, float z); 182 void Color3fVertex3fvSUN(const float *c, const float *v); 183 184 void Normal3fVertex3fSUN(float nx, float ny, float nz, 185 float x, float y, float z); 186 void Normal3fVertex3fvSUN(const float *n, const float *v); 187 188 void Color4fNormal3fVertex3fSUN(float r, float g, float b, float a, 189 float nx, float ny, float nz, 190 float x, float y, float z); 191 void Color4fNormal3fVertex3fvSUN(const float *n, const float *v); 192 193 void TexCoord2fVertex3fSUN(float s, float t, float x, float y, float z); 194 void TexCoord2fVertex3fvSUN(const float *tc, const float *v); 195 196 void TexCoord4fVertex4fSUN(float s, float t, float p, float q, 197 float x, float y, float z, float w); 198 void TexCoord4fVertex4fvSUN(const float *tc, const float *v); 199 200 void TexCoord2fColor4ubVertex3fSUN(float s, float t, 201 ubyte r, ubyte g, ubyte b, ubyte a, 202 float x, float y, float z); 203 void TexCoord2fColor4ubVertex3fvSUN(const float *tc, const ubyte *c, const 204float *v); 205 206 void TexCoord2fColor3fVertex3fSUN(float s, float t, 207 float r, float g, float b, 208 float x, float y, float z); 209 void TexCoord2fColor3fVertex3fvSUN(const float *tc, const float *c, const 210float *v); 211 212 void TexCoord2fNormal3fVertex3fSUN(float s, float t, 213 float nx, float ny, float nz, 214 float x, float y, float z); 215 void TexCoord2fNormal3fVertex3fvSUN(const float *tc, const float *n, const 216float *v); 217 218 void TexCoord2fColor4fNormal3fVertex3fSUN(float s, float t, 219 float r, float g, float b, float a, 220 float nx, float ny, float nz, 221 float x, float y, float z); 222 void TexCoord2fColor4fNormal3fVertex3fvSUN(const float *tc, const float *c, 223const float *n, 224 const float *v); 225 226 void TexCoord4fColor4fNormal3fVertex4fSUN(float s, float t, float p, float 227q, 228 float r, float g, float b, float a, 229 float nx, float ny, float nz, 230 float x, float y, float z, float w); 231 void TexCoord4fColor4fNormal3fVertex4fvSUN(const float *tc, const float *c, 232const float *n, 233 const float *v); 234 235 void ReplacementCodeuiVertex3fSUN(uint rc, float x, float y, float z); 236 void ReplacementCodeuiVertex3fvSUN(const uint *rc, const float *v); 237 238 void ReplacementCodeuiColor4ubVertex3fSUN(uint rc, 239 ubyte r, ubyte g, ubyte b, ubyte a, 240 float x, float y, float z); 241 void ReplacementCodeuiColor4ubVertex3fvSUN(const uint *rc, const ubyte *c, 242const float *v); 243 244 void ReplacementCodeuiColor3fVertex3fSUN(uint rc, 245 float r, float g, float b, 246 float x, float y, float z); 247 void ReplacementCodeuiColor3fVertex3fvSUN(const uint *rc, const float *c, 248const float *v); 249 250 void ReplacementCodeuiNormal3fVertex3fSUN(uint rc, 251 float nx, float ny, float nz, 252 float x, float y, float z); 253 void ReplacementCodeuiNormal3fVertex3fvSUN(const uint *rc, const float *n, 254const float *v); 255 256 void ReplacementCodeuiColor4fNormal3fVertex3fSUN(uint rc, 257 float r, float g, float b, float a, 258 float nx, float ny, float nz, 259 float x, float y, float z); 260 void ReplacementCodeuiColor4fNormal3fVertex3fvSUN(const uint *rc, const 261float *c, 262 const float *n, const 263float *v); 264 265 void ReplacementCodeuiTexCoord2fVertex3fSUN(uint rc, 266 float s, float t, 267 float x, float y, float z); 268 void ReplacementCodeuiTexCoord2fVertex3fvSUN(const uint *rc, const float 269*tc, const float *v); 270 271 void ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint rc, 272 float s, float t, 273 float nx, float ny, float nz, 274 float x, float y, float z); 275 void ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const uint *rc, const 276float *tc, 277 const float *n, const 278float *v); 279 280 void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint rc, 281 float s, float t, 282 float r, float g, float b, float a, 283 float nx, float ny, float nz, 284 float x, float y, float z); 285 void ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN( 286 const uint *rc, const float *tc, const 287float *c, 288 const float *n, const float *v); 289 290 291Additions to Chapter 3 of the 1.2 Specification (Rasterization) 292 293 None 294 295Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations 296and the Frame Buffer) 297 298 None 299 300Additions to Chapter 5 of the 1.2 Specification (Special Functions) 301 302 None 303 304Additions to Chapter 6 of the 1.2 Specification (State and State Requests) 305 306 None 307 308Additions to the GLX / WGL / AGL Specifications 309 310 None 311 312 313GLX Protocol 314 315 No new GLX protocol is added. The vertex components in the new GL commands 316 will be sent to remote servers using the regular GL protocols as if 317 the vertex components are passed in using the regular GL commands. 318 319 320Dependencies on SUN_triangle_list 321 322 If SUN_triangle_list is supported, those GL commands which include 323 a replacement code will be supported as well. Otherwise commands which 324 include replacement codes are not supported. 325 326 327Errors 328 329 None 330 331New State 332 333 None 334 335New Implementation Dependent State 336 337 None 338