Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygent_dd_imm_primtmp.h
Go to the documentation of this file.
00001 00002 /* 00003 * Mesa 3-D graphics library 00004 * Version: 3.5 00005 * 00006 * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. 00007 * 00008 * Permission is hereby granted, free of charge, to any person obtaining a 00009 * copy of this software and associated documentation files (the "Software"), 00010 * to deal in the Software without restriction, including without limitation 00011 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 00012 * and/or sell copies of the Software, and to permit persons to whom the 00013 * Software is furnished to do so, subject to the following conditions: 00014 * 00015 * The above copyright notice and this permission notice shall be included 00016 * in all copies or substantial portions of the Software. 00017 * 00018 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00019 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00020 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 00021 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 00022 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 00023 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00024 * 00025 * Authors: 00026 * Keith Whitwell <keithw@valinux.com> 00027 * Gareth Hughes <gareth@valinux.com> 00028 */ 00029 00030 /* Template for immediate mode vertices. 00031 * 00032 * Probably instantiate once for each vertex format used: 00033 * - TINY_VERTICES 00034 * - TEX0_VERTICES 00035 * - TEX1_VERTICES 00036 * - PTEX_VERTICES 00037 * 00038 * Have to handle TEX->PTEX transition somehow. 00039 */ 00040 00041 #define DBG 0 00042 00043 00044 00045 /* ============================================================= 00046 * GL_POINTS 00047 */ 00048 00049 static void TAG(flush_point_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00050 { 00051 if ( !v0->mask ) { 00052 LOCAL_VARS; 00053 DRAW_POINT( v0 ); 00054 } 00055 } 00056 00057 00058 /* ============================================================= 00059 * GL_LINES 00060 */ 00061 00062 static void TAG(flush_line_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00063 00064 static void TAG(flush_line_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00065 { 00066 LOCAL_VARS; 00067 FLUSH_VERTEX = TAG(flush_line_1); 00068 ACTIVE_VERTEX = IMM_VERTICES( 1 ); 00069 } 00070 00071 static void TAG(flush_line_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00072 { 00073 LOCAL_VARS; 00074 TNL_VERTEX *v1 = v0 - 1; 00075 ACTIVE_VERTEX = IMM_VERTICES( 0 ); 00076 FLUSH_VERTEX = TAG(flush_line_0); 00077 if (FALLBACK_OR_CLIPPING) 00078 CLIP_OR_DRAW_LINE( ctx, v1, v0 ); 00079 else 00080 DRAW_LINE( ctx, v1, v0 ); 00081 } 00082 00083 00084 /* ============================================================= 00085 * GL_LINE_LOOP 00086 */ 00087 00088 static void TAG(flush_line_loop_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00089 static void TAG(flush_line_loop_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00090 00091 static void TAG(flush_line_loop_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00092 { 00093 LOCAL_VARS; 00094 00095 ACTIVE_VERTEX = v0 + 1; 00096 FLUSH_VERTEX = TAG(flush_line_loop_1); 00097 } 00098 00099 #define DRAW_LINELOOP_LINE( a, b ) \ 00100 if (!HAVE_LINE_STRIP || FALLBACK_OR_CLIPPING) { \ 00101 CLIP_OR_DRAW_LINE( ctx, a, b ); \ 00102 } else if (EXTEND_PRIM( 1 )) { \ 00103 EMIT_VERTEX( b ); \ 00104 } else { \ 00105 BEGIN_PRIM( GL_LINE_STRIP, 2 ); \ 00106 EMIT_VERTEX( a ); \ 00107 EMIT_VERTEX( b ); \ 00108 } 00109 00110 static void TAG(flush_line_loop_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00111 { 00112 LOCAL_VARS; 00113 TNL_VERTEX *v1 = v0 - 1; 00114 ACTIVE_VERTEX = v1; 00115 FLUSH_VERTEX = TAG(flush_line_loop_2); 00116 DRAW_LINELOOP_LINE( v1, v0 ); 00117 } 00118 00119 static void TAG(flush_line_loop_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00120 { 00121 LOCAL_VARS; 00122 TNL_VERTEX *v1 = v0 + 1; 00123 ACTIVE_VERTEX = v1; 00124 FLUSH_VERTEX = TAG(flush_line_loop_1); 00125 DRAW_LINELOOP_LINE( v1, v0 ); 00126 } 00127 00128 static void TAG(end_line_loop)( GLcontext *ctx ) 00129 { 00130 LOCAL_VARS; 00131 00132 if ( FLUSH_VERTEX != TAG(flush_line_loop_0) ) { 00133 TNL_VERTEX *v1 = ACTIVE_VERTEX; 00134 TNL_VERTEX *v0 = IMM_VERTICES( 0 ); 00135 DRAW_LINELOOP_LINE( v1, v0 ); 00136 } 00137 } 00138 00139 00140 00141 /* ============================================================= 00142 * GL_LINE_STRIP 00143 */ 00144 00145 static void TAG(flush_line_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00146 static void TAG(flush_line_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00147 00148 static void TAG(flush_line_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00149 { 00150 LOCAL_VARS; 00151 00152 ACTIVE_VERTEX = v0 + 1; 00153 FLUSH_VERTEX = TAG(flush_line_strip_0b); 00154 } 00155 00156 00157 static void TAG(flush_line_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00158 { 00159 LOCAL_VARS; 00160 TNL_VERTEX *v1 = v0 - 1; 00161 00162 ACTIVE_VERTEX = v1; 00163 FLUSH_VERTEX = TAG(flush_line_strip_2); 00164 00165 if (!HAVE_LINE_STRIP || FALLBACK_OR_CLIPPING) 00166 CLIP_OR_DRAW_LINE( ctx, v1, v0 ); 00167 else if (EXTEND_PRIM( 1 )) { 00168 EMIT_VERTEX( v0 ); 00169 } else { 00170 BEGIN_PRIM( GL_LINE_STRIP, 2 ); 00171 EMIT_VERTEX( v1 ); 00172 EMIT_VERTEX( v0 ); 00173 } 00174 } 00175 00176 static void TAG(flush_line_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00177 { 00178 LOCAL_VARS; 00179 TNL_VERTEX *v1 = v0 + 1; 00180 00181 ACTIVE_VERTEX = v1; 00182 FLUSH_VERTEX = TAG(flush_line_strip_1); 00183 00184 if (!HAVE_LINE_STRIP || FALLBACK_OR_CLIPPING) 00185 CLIP_OR_DRAW_LINE( ctx, v1, v0 ); 00186 else if (EXTEND_PRIM( 1 )) { 00187 EMIT_VERTEX( v0 ); 00188 } else { 00189 BEGIN_PRIM( GL_LINE_STRIP, 2 ); 00190 EMIT_VERTEX( v1 ); 00191 EMIT_VERTEX( v0 ); 00192 } 00193 } 00194 00195 00196 00197 /* ============================================================= 00198 * GL_TRIANGLES 00199 */ 00200 00201 static void TAG(flush_triangle_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00202 static void TAG(flush_triangle_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00203 00204 static void TAG(flush_triangle_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00205 { 00206 LOCAL_VARS; 00207 00208 if ( DBG ) fprintf( stderr, __FUNCTION__ "\n" ); 00209 00210 ACTIVE_VERTEX = v0 + 1; 00211 FLUSH_VERTEX = TAG(flush_triangle_1); 00212 BEGIN_PRIM( GL_TRIANGLES, 0 ); 00213 } 00214 00215 static void TAG(flush_triangle_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00216 { 00217 LOCAL_VARS; 00218 00219 if ( DBG ) fprintf( stderr, __FUNCTION__ "\n" ); 00220 00221 ACTIVE_VERTEX = v0 + 1; 00222 FLUSH_VERTEX = TAG(flush_triangle_2); 00223 } 00224 00225 static void TAG(flush_triangle_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00226 { 00227 LOCAL_VARS; 00228 TNL_VERTEX *v2 = v0 - 2; 00229 TNL_VERTEX *v1 = v0 - 1; 00230 00231 if ( DBG ) fprintf( stderr, __FUNCTION__ "\n" ); 00232 00233 ACTIVE_VERTEX = v2; 00234 FLUSH_VERTEX = TAG(flush_triangle_0); 00235 00236 /* nothing gained by trying to emit as hw primitives -- that 00237 * happens normally in this case. 00238 */ 00239 if (FALLBACK_OR_CLIPPING) 00240 CLIP_OR_DRAW_TRI( ctx, v2, v1, v0 ); 00241 else 00242 DRAW_TRI( ctx, v2, v1, v0 ); 00243 } 00244 00245 00246 00247 00248 /* ============================================================= 00249 * GL_TRIANGLE_STRIP 00250 */ 00251 00252 static void TAG(flush_tri_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ); 00253 static void TAG(flush_tri_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00254 static void TAG(flush_tri_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00255 00256 static void TAG(flush_tri_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00257 { 00258 LOCAL_VARS; 00259 ACTIVE_VERTEX = IMM_VERTICES( 1 ); 00260 FLUSH_VERTEX = TAG(flush_tri_strip_1); 00261 } 00262 00263 static void TAG(flush_tri_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00264 { 00265 LOCAL_VARS; 00266 ACTIVE_VERTEX = IMM_VERTICES( 2 ); 00267 FLUSH_VERTEX = TAG(flush_tri_strip_2); 00268 } 00269 00270 #define DO_TRISTRIP_TRI( vert0, vert1 ) \ 00271 if (!HAVE_TRI_STRIP || FALLBACK_OR_CLIPPING) { \ 00272 TNL_VERTEX *v2 = IMM_VERTICES( vert0 ); \ 00273 TNL_VERTEX *v1 = IMM_VERTICES( vert1 ); \ 00274 TAG(draw_tri)( ctx, v2, v1, v0 ); \ 00275 } else if (EXTEND_PRIM( 1 )) { \ 00276 EMIT_VERTEX( v0 ); \ 00277 } else { \ 00278 TNL_VERTEX *v2 = IMM_VERTICES( vert0 ); \ 00279 TNL_VERTEX *v1 = IMM_VERTICES( vert1 ); \ 00280 BEGIN_PRIM( GL_TRIANGLE_STRIP, 3 ); \ 00281 EMIT_VERTEX( v2 ); \ 00282 EMIT_VERTEX( v1 ); \ 00283 EMIT_VERTEX( v0 ); \ 00284 } 00285 00286 static void TAG(flush_tri_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00287 { 00288 LOCAL_VARS; 00289 FLUSH_VERTEX = TAG(flush_tri_strip_3); 00290 ACTIVE_VERTEX = IMM_VERTICES( 3 ); 00291 DO_TRISTRIP_TRI( 0, 1 ); 00292 } 00293 00294 static void TAG(flush_tri_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ) 00295 { 00296 LOCAL_VARS; 00297 FLUSH_VERTEX = TAG(flush_tri_strip_4); 00298 ACTIVE_VERTEX = IMM_VERTICES( 0 ); 00299 DO_TRISTRIP_TRI( 1, 2 ); 00300 } 00301 00302 static void TAG(flush_tri_strip_4)( GLcontext *ctx, TNL_VERTEX *v0 ) 00303 { 00304 LOCAL_VARS; 00305 FLUSH_VERTEX = TAG(flush_tri_strip_5); 00306 ACTIVE_VERTEX = IMM_VERTICES( 1 ); 00307 DO_TRISTRIP_TRI( 2, 3 ); 00308 } 00309 00310 static void TAG(flush_tri_strip_5)( GLcontext *ctx, TNL_VERTEX *v0 ) 00311 { 00312 LOCAL_VARS; 00313 FLUSH_VERTEX = TAG(flush_tri_strip_2); 00314 ACTIVE_VERTEX = IMM_VERTICES( 2 ); 00315 DO_TRISTRIP_TRI( 0, 3 ); 00316 } 00317 00318 00319 00320 /* ============================================================= 00321 * GL_TRIANGLE_FAN 00322 */ 00323 00324 static void TAG(flush_tri_fan_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00325 static void TAG(flush_tri_fan_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00326 00327 static void TAG(flush_tri_fan_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00328 { 00329 LOCAL_VARS; 00330 00331 ACTIVE_VERTEX = v0 + 1; 00332 FLUSH_VERTEX = TAG(flush_tri_fan_1); 00333 } 00334 00335 static void TAG(flush_tri_fan_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00336 { 00337 LOCAL_VARS; 00338 00339 ACTIVE_VERTEX = v0 + 1; 00340 FLUSH_VERTEX = TAG(flush_tri_fan_2); 00341 } 00342 00343 #define DO_TRIFAN_TRI( vert0, vert1 ) \ 00344 if (!HAVE_TRI_FAN || FALLBACK_OR_CLIPPING) { \ 00345 TNL_VERTEX *v2 = IMM_VERTICES( vert0 ); \ 00346 TNL_VERTEX *v1 = IMM_VERTICES( vert1 ); \ 00347 TAG(draw_tri)( ctx, v2, v1, v0 ); \ 00348 } else if (EXTEND_PRIM( 1 )) { \ 00349 EMIT_VERTEX( v0 ); \ 00350 } else { \ 00351 TNL_VERTEX *v2 = IMM_VERTICES( vert0 ); \ 00352 TNL_VERTEX *v1 = IMM_VERTICES( vert1 ); \ 00353 BEGIN_PRIM( GL_TRIANGLE_FAN, 3 ); \ 00354 EMIT_VERTEX( v2 ); \ 00355 EMIT_VERTEX( v1 ); \ 00356 EMIT_VERTEX( v0 ); \ 00357 } 00358 00359 static void TAG(flush_tri_fan_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00360 { 00361 LOCAL_VARS; 00362 ACTIVE_VERTEX = IMM_VERTICES( 1 ); 00363 FLUSH_VERTEX = TAG(flush_tri_fan_3 ); 00364 DO_TRIFAN_TRI( 0, 1 ); 00365 } 00366 00367 static void TAG(flush_tri_fan_3)( GLcontext *ctx, TNL_VERTEX *v0 ) 00368 { 00369 LOCAL_VARS; 00370 ACTIVE_VERTEX = IMM_VERTICES( 2 ); 00371 FLUSH_VERTEX = TAG(flush_tri_fan_2 ); 00372 DO_TRIFAN_TRI( 0, 2 ); 00373 } 00374 00375 00376 00377 /* ============================================================= 00378 * GL_QUADS 00379 */ 00380 00381 static void TAG(flush_quad_3)( GLcontext *ctx, TNL_VERTEX *v0 ); 00382 static void TAG(flush_quad_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00383 static void TAG(flush_quad_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00384 00385 static void TAG(flush_quad_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00386 { 00387 LOCAL_VARS; 00388 IMM_VERTEX( v0 ) = v0 + 1; 00389 FLUSH_VERTEX = TAG(flush_quad_1); 00390 } 00391 00392 static void TAG(flush_quad_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00393 { 00394 LOCAL_VARS; 00395 IMM_VERTEX( v0 ) = v0 + 1; 00396 FLUSH_VERTEX = TAG(flush_quad_2); 00397 } 00398 00399 static void TAG(flush_quad_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00400 { 00401 LOCAL_VARS; 00402 IMM_VERTEX( v0 ) = v0 + 1; 00403 FLUSH_VERTEX = TAG(flush_quad_3); 00404 } 00405 00406 static void TAG(flush_quad_3)( GLcontext *ctx, TNL_VERTEX *v0 ) 00407 { 00408 LOCAL_VARS; 00409 TNL_VERTEX *v3 = v0 - 3; 00410 TNL_VERTEX *v2 = v0 - 2; 00411 TNL_VERTEX *v1 = v0 - 1; 00412 00413 IMM_VERTEX( v0 ) = v3; 00414 FLUSH_VERTEX = TAG(flush_quad_0); 00415 00416 if (!HAVE_HW_QUADS || FALLBACK_OR_CLIPPING) { 00417 CLIP_OR_DRAW_TRI( ctx, v3, v2, v0 ); 00418 CLIP_OR_DRAW_TRI( ctx, v2, v1, v0 ); 00419 } else { 00420 EXTEND_PRIM_NF( GL_QUADS, 4 ); 00421 EMIT_VERTEX( v3 ); 00422 EMIT_VERTEX( v2 ); 00423 EMIT_VERTEX( v1 ); 00424 EMIT_VERTEX( v0 ); 00425 } 00426 } 00427 00428 00429 00430 /* ============================================================= 00431 * GL_QUAD_STRIP 00432 */ 00433 00434 static void TAG(flush_quad_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ); 00435 static void TAG(flush_quad_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00436 static void TAG(flush_quad_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00437 00438 static void TAG(flush_quad_strip_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00439 { 00440 LOCAL_VARS; 00441 00442 IMM_VERTEX( v3 ) = v0; 00443 IMM_VERTEX( v0 ) = v0 + 1; 00444 FLUSH_VERTEX = TAG(flush_quad_strip_1); 00445 } 00446 00447 static void TAG(flush_quad_strip_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00448 { 00449 LOCAL_VARS; 00450 00451 IMM_VERTEX( v2 ) = v0; 00452 IMM_VERTEX( v0 ) = v0 + 1; 00453 FLUSH_VERTEX = TAG(flush_quad_strip_2); 00454 } 00455 00456 static void TAG(flush_quad_strip_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00457 { 00458 LOCAL_VARS; 00459 00460 IMM_VERTEX( v1 ) = v0; 00461 IMM_VERTEX( v0 ) = v0 + 1; 00462 FLUSH_VERTEX = TAG(flush_quad_strip_3); 00463 } 00464 00465 static void TAG(flush_quad_strip_3)( GLcontext *ctx, TNL_VERTEX *v0 ) 00466 { 00467 LOCAL_VARS; 00468 TNL_VERTEX *v3 = IMM_VERTEX( v3 ); 00469 TNL_VERTEX *v2 = IMM_VERTEX( v2 ); 00470 TNL_VERTEX *v1 = IMM_VERTEX( v1 ); 00471 00472 IMM_VERTEX( v0 ) = v3; 00473 IMM_VERTEX( v2 ) = v0; 00474 IMM_VERTEX( v3 ) = v1; 00475 FLUSH_VERTEX = TAG(flush_quad_strip_2); 00476 00477 if (FALLBACK_OR_CLIPPING) { 00478 CLIP_OR_DRAW_TRI( ctx, v3, v2, v0 ); 00479 CLIP_OR_DRAW_TRI( ctx, v2, v1, v0 ); 00480 } else { 00481 DRAW_TRI( ctx, v3, v2, v0 ); 00482 DRAW_TRI( ctx, v2, v1, v0 ); 00483 } 00484 } 00485 00486 00487 00488 /* ============================================================= 00489 * GL_POLYGON 00490 */ 00491 00492 static void TAG(flush_poly_2)( GLcontext *ctx, TNL_VERTEX *v0 ); 00493 static void TAG(flush_poly_1)( GLcontext *ctx, TNL_VERTEX *v0 ); 00494 00495 static void TAG(flush_poly_0)( GLcontext *ctx, TNL_VERTEX *v0 ) 00496 { 00497 LOCAL_VARS; 00498 ACTIVE_VERTEX = IMM_VERTICES( 1 ); 00499 FLUSH_VERTEX = TAG(flush_poly_1); 00500 } 00501 00502 static void TAG(flush_poly_1)( GLcontext *ctx, TNL_VERTEX *v0 ) 00503 { 00504 LOCAL_VARS; 00505 ACTIVE_VERTEX = IMM_VERTICES( 2 ); 00506 FLUSH_VERTEX = TAG(flush_poly_2); 00507 } 00508 00509 #define DO_POLY_TRI( vert0, vert1 ) \ 00510 if (!HAVE_POLYGONS || FALLBACK_OR_CLIPPING) { \ 00511 TNL_VERTEX *v2 = IMM_VERTICES( vert0 ); \ 00512 TNL_VERTEX *v1 = IMM_VERTICES( vert1 ); \ 00513 TAG(draw_tri)( ctx, v1, v0, v2 ); \ 00514 } else if (EXTEND_PRIM( 1 )) { \ 00515 EMIT_VERTEX( v0 ); \ 00516 } else { \ 00517 TNL_VERTEX *v2 = IMM_VERTICES( vert0 ); \ 00518 TNL_VERTEX *v1 = IMM_VERTICES( vert1 ); \ 00519 BEGIN_PRIM( GL_POLYGON, 3 ); \ 00520 EMIT_VERTEX( v2 ); \ 00521 EMIT_VERTEX( v1 ); \ 00522 EMIT_VERTEX( v0 ); \ 00523 } 00524 00525 static void TAG(flush_poly_2)( GLcontext *ctx, TNL_VERTEX *v0 ) 00526 { 00527 LOCAL_VARS; 00528 ACTIVE_VERTEX = IMM_VERTICES( 1 ); 00529 FLUSH_VERTEX = TAG(flush_poly_3); 00530 DO_POLY_TRI( 0, 1 ); 00531 } 00532 00533 static void TAG(flush_poly_3)( GLcontext *ctx, TNL_VERTEX *v0 ) 00534 { 00535 LOCAL_VARS; 00536 ACTIVE_VERTEX = IMM_VERTICES( 2 ); 00537 FLUSH_VERTEX = TAG(flush_poly_2); 00538 DO_POLY_TRI( 0, 2 ); 00539 } 00540 00541 00542 void (*TAG(flush_tab)[GL_POLYGON+1])( GLcontext *, TNL_VERTEX * ) = 00543 { 00544 TAG(flush_point), 00545 TAG(flush_line_0), 00546 TAG(flush_line_loop_0), 00547 TAG(flush_line_strip_0), 00548 TAG(flush_triangle_0), 00549 TAG(flush_tri_strip_0), 00550 TAG(flush_tri_fan_0), 00551 TAG(flush_quad_0), 00552 TAG(flush_quad_strip_0), 00553 TAG(flush_poly_0), 00554 }; 00555 00556 00557 #ifndef PRESERVE_PRIM_DEFS 00558 #undef LOCAL_VARS 00559 #undef GET_INTERP_FUNC 00560 #undef IMM_VERTEX 00561 #undef IMM_VERTICES 00562 #undef FLUSH_VERTEX 00563 #endif 00564 #undef PRESERVE_PRIM_DEFS 00565 #undef EXTEND_PRIM 00566 #undef EMIT_VERTEX 00567 #undef EMIT_VERTEX_TRI 00568 #undef EMIT_VERTEX_LINE 00569 #undef EMIT_VERTEX_POINT 00570 #undef TAG Generated on Sun May 27 2012 04:20:47 for ReactOS by
1.7.6.1
|