ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

t_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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.