/** * Determine which line drawing function to use given the current * rendering context. * * Please update the summary flag _SWRAST_NEW_LINE if you add or remove * tests to this code. */ void _swrast_choose_line( GLcontext *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLboolean rgbmode = ctx->Visual.rgbMode; GLboolean specular = (ctx->Fog.ColorSumEnabled || (ctx->Light.Enabled && ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)); if (ctx->RenderMode == GL_RENDER) { if (ctx->Line.SmoothFlag) { /* antialiased lines */ _swrast_choose_aa_line_function(ctx); ASSERT(swrast->Line); } else if (ctx->Texture._EnabledCoordUnits || ctx->FragmentProgram._Current || swrast->_FogEnabled || specular) { USE(general_line); } else if (ctx->Depth.Test || ctx->Line.Width != 1.0 || ctx->Line.StippleFlag) { /* no texture, but Z, fog, width>1, stipple, etc. */ if (rgbmode) #if CHAN_BITS == 32 USE(general_line); #else USE(rgba_line); #endif else USE(ci_line); } else {
/* * Determine which line drawing function to use given the current * rendering context. * * Please update the summary flag _SWRAST_NEW_LINE if you add or remove * tests to this code. */ void _swrast_choose_line( GLcontext *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); const GLboolean rgbmode = ctx->Visual.rgbMode; if (ctx->RenderMode == GL_RENDER) { if (ctx->Line.SmoothFlag) { /* antialiased lines */ _swrast_choose_aa_line_function(ctx); ASSERT(swrast->Line); } else if (ctx->Texture._EnabledCoordUnits) { /* textured lines */ if (ctx->Texture._EnabledCoordUnits > 0x1 || NEED_SECONDARY_COLOR(ctx)) { /* multi-texture and/or separate specular color */ USE(multitextured_line); } else { USE(textured_line); } } else if (ctx->Depth.Test || swrast->_FogEnabled || ctx->Line._Width != 1.0 || ctx->Line.StippleFlag) { /* no texture, but Z, fog, width>1, stipple, etc. */ if (rgbmode) USE(general_rgba_line); else USE(general_ci_line); } else { /* simplest lines */ if (rgbmode) USE(simple_rgba_line); else USE(simple_ci_line); } } else if (ctx->RenderMode == GL_FEEDBACK) { USE(_swrast_feedback_line); } else { ASSERT(ctx->RenderMode == GL_SELECT); USE(_swrast_select_line); } /*_mesa_print_line_function(ctx);*/ }
/** * Determine which line drawing function to use given the current * rendering context. * * Please update the summary flag _SWRAST_NEW_LINE if you add or remove * tests to this code. */ void _swrast_choose_line( struct gl_context *ctx ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); GLboolean specular = (ctx->Fog.ColorSumEnabled || (ctx->Light.Enabled && ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)); if (ctx->RenderMode == GL_RENDER) { if (ctx->Line.SmoothFlag) { /* antialiased lines */ _swrast_choose_aa_line_function(ctx); ASSERT(swrast->Line); } else if (ctx->Texture._EnabledCoordUnits || ctx->FragmentProgram._Current || swrast->_FogEnabled || specular) { USE(general_line); } else if (ctx->Depth.Test || ctx->Line.Width != 1.0 || ctx->Line.StippleFlag) { /* no texture, but Z, fog, width>1, stipple, etc. */ #if CHAN_BITS == 32 USE(general_line); #else USE(rgba_line); #endif } else { ASSERT(!ctx->Depth.Test); ASSERT(ctx->Line.Width == 1.0); /* simple lines */ USE(simple_no_z_rgba_line); } } else if (ctx->RenderMode == GL_FEEDBACK) { USE(_swrast_feedback_line); } else { ASSERT(ctx->RenderMode == GL_SELECT); USE(_swrast_select_line); } }