Mesa (ext-provoking-vertex): mesa: fix first provoking vertex mode for unfilled tri strips
Brian Paul
brianp at kemper.freedesktop.org
Fri Jun 19 04:52:24 UTC 2009
Module: Mesa
Branch: ext-provoking-vertex
Commit: 601065f15389b52c084cdc46c339e15fd3b5eb25
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=601065f15389b52c084cdc46c339e15fd3b5eb25
Author: Brian Paul <brianp at vmware.com>
Date: Thu Jun 18 22:45:57 2009 -0600
mesa: fix first provoking vertex mode for unfilled tri strips
---
src/mesa/tnl/t_vb_rendertmp.h | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/src/mesa/tnl/t_vb_rendertmp.h b/src/mesa/tnl/t_vb_rendertmp.h
index 29d2fa8..75f6f55 100644
--- a/src/mesa/tnl/t_vb_rendertmp.h
+++ b/src/mesa/tnl/t_vb_rendertmp.h
@@ -201,22 +201,28 @@ static void TAG(render_tri_strip)( GLcontext *ctx,
INIT(GL_TRIANGLE_STRIP);
if (NEED_EDGEFLAG_SETUP) {
for (j=start+2;j<count;j++,parity^=1) {
- GLuint ej2 = ELT(j-2+parity);
- GLuint ej1 = ELT(j-1-parity);
- GLuint ej = ELT(j);
- GLboolean ef2 = EDGEFLAG_GET( ej2 );
- GLboolean ef1 = EDGEFLAG_GET( ej1 );
- GLboolean ef = EDGEFLAG_GET( ej );
+ GLuint ej2, ej1, ej;
+ GLboolean ef2, ef1, ef;
+ if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT) {
+ ej2 = ELT(j-2+parity);
+ ej1 = ELT(j-1-parity);
+ ej = ELT(j);
+ }
+ else {
+ ej2 = ELT(j-1+parity);
+ ej1 = ELT(j-parity);
+ ej = ELT(j-2);
+ }
+ ef2 = EDGEFLAG_GET( ej2 );
+ ef1 = EDGEFLAG_GET( ej1 );
+ ef = EDGEFLAG_GET( ej );
if (TEST_PRIM_BEGIN(flags)) {
RESET_STIPPLE;
}
EDGEFLAG_SET( ej2, GL_TRUE );
EDGEFLAG_SET( ej1, GL_TRUE );
EDGEFLAG_SET( ej, GL_TRUE );
- if (ctx->Light.ProvokingVertex == GL_LAST_VERTEX_CONVENTION_EXT)
- RENDER_TRI( ej2, ej1, ej );
- else
- RENDER_TRI( ej, ej2, ej1 );
+ RENDER_TRI( ej2, ej1, ej );
EDGEFLAG_SET( ej2, ef2 );
EDGEFLAG_SET( ej1, ef1 );
EDGEFLAG_SET( ej, ef );
More information about the mesa-commit
mailing list