diff options
author | Brian Paul <[email protected]> | 2000-01-25 16:49:20 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 2000-01-25 16:49:20 +0000 |
commit | 3781b7bfa5bf0f4e69f8e9641b9d0a9af95c1562 (patch) | |
tree | ffe5776f882a89301233c24bfb9cae20bf141d5b | |
parent | ebd5feab9af92ff08c2b9280e6dfa1a44a7d1c22 (diff) |
fixed VB->IndexPtr==NULL bug (Richard Guenther)
-rw-r--r-- | src/mesa/main/feedback.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/src/mesa/main/feedback.c b/src/mesa/main/feedback.c index 2b6ff083b85..71c1025d901 100644 --- a/src/mesa/main/feedback.c +++ b/src/mesa/main/feedback.c @@ -1,4 +1,4 @@ -/* $Id: feedback.c,v 1.7 2000/01/17 15:40:43 brianp Exp $ */ +/* $Id: feedback.c,v 1.8 2000/01/25 16:49:20 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -157,13 +157,14 @@ void gl_feedback_vertex( GLcontext *ctx, -static void gl_do_feedback_vertex( GLcontext *ctx, GLuint v, GLuint pv ) +static void feedback_vertex( GLcontext *ctx, GLuint v, GLuint pv ) { GLfloat win[4]; GLfloat color[4]; GLfloat tc[4]; GLuint texUnit = ctx->Texture.CurrentTransformUnit; - struct vertex_buffer *VB = ctx->VB; + const struct vertex_buffer *VB = ctx->VB; + GLuint index; win[0] = VB->Win.data[v][0]; win[1] = VB->Win.data[v][1]; @@ -190,7 +191,12 @@ static void gl_do_feedback_vertex( GLcontext *ctx, GLuint v, GLuint pv ) VB->TexCoordPtr[texUnit]->data[v]); } - gl_feedback_vertex( ctx, win, color, VB->IndexPtr->data[v], tc ); + if (VB->IndexPtr) + index = VB->IndexPtr->data[v]; + else + index = 0; + + gl_feedback_vertex( ctx, win, color, index, tc ); } @@ -205,9 +211,9 @@ void gl_feedback_triangle( GLcontext *ctx, FEEDBACK_TOKEN( ctx, (GLfloat) (GLint) GL_POLYGON_TOKEN ); FEEDBACK_TOKEN( ctx, (GLfloat) 3 ); /* three vertices */ - gl_do_feedback_vertex( ctx, v0, pv ); - gl_do_feedback_vertex( ctx, v1, pv ); - gl_do_feedback_vertex( ctx, v2, pv ); + feedback_vertex( ctx, v0, pv ); + feedback_vertex( ctx, v1, pv ); + feedback_vertex( ctx, v2, pv ); } } @@ -221,8 +227,8 @@ void gl_feedback_line( GLcontext *ctx, GLuint v1, GLuint v2, GLuint pv ) FEEDBACK_TOKEN( ctx, (GLfloat) (GLint) token ); - gl_do_feedback_vertex( ctx, v1, pv ); - gl_do_feedback_vertex( ctx, v2, pv ); + feedback_vertex( ctx, v1, pv ); + feedback_vertex( ctx, v2, pv ); ctx->StippleCounter++; } @@ -230,13 +236,13 @@ void gl_feedback_line( GLcontext *ctx, GLuint v1, GLuint v2, GLuint pv ) void gl_feedback_points( GLcontext *ctx, GLuint first, GLuint last ) { - struct vertex_buffer *VB = ctx->VB; + const struct vertex_buffer *VB = ctx->VB; GLuint i; for (i=first;i<=last;i++) { if (VB->ClipMask[i]==0) { FEEDBACK_TOKEN( ctx, (GLfloat) (GLint) GL_POINT_TOKEN ); - gl_do_feedback_vertex( ctx, i, i ); + feedback_vertex( ctx, i, i ); } } } |