From 420ef64f18208a54b97e96936b741dc1531e45c8 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 1 Dec 1999 21:10:08 +0000 Subject: gl_BindTexture was broken when target==GL_TEXTURE_3D --- src/mesa/main/texobj.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 0abe6036eb..c23ea2c60d 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -1,4 +1,4 @@ -/* $Id: texobj.c,v 1.9 1999/11/12 04:57:04 kendallb Exp $ */ +/* $Id: texobj.c,v 1.10 1999/12/01 21:10:08 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -56,10 +56,10 @@ gl_alloc_texture_object( struct gl_shared_state *shared, GLuint name, { struct gl_texture_object *obj; - assert(dimensions <= 3); + ASSERT(dimensions <= 3); + + obj = CALLOC_STRUCT(gl_texture_object); - obj = (struct gl_texture_object *) - calloc(1,sizeof(struct gl_texture_object)); if (obj) { /* init the non-zero fields */ obj->RefCount = 1; @@ -420,14 +420,21 @@ _mesa_BindTexture( GLenum target, GLuint texName ) ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glBindTexture"); - dim = (GLuint) (target - GL_TEXTURE_1D); - - if (dim > 2) { - gl_error( ctx, GL_INVALID_ENUM, "glBindTexture" ); - return; + switch (target) { + case GL_TEXTURE_1D: + dim = 1; + break; + case GL_TEXTURE_2D: + dim = 2; + break; + case GL_TEXTURE_3D: + dim = 3; + break; + default: + gl_error( ctx, GL_INVALID_ENUM, "glBindTexture(target)" ); + return; } - dim++; oldTexObj = texUnit->CurrentD[dim]; if (oldTexObj->Name == texName) @@ -444,6 +451,7 @@ _mesa_BindTexture( GLenum target, GLuint texName ) if (newTexObj->Dimensions != dim) { if (newTexObj->Dimensions) { + /* the named texture object's dimensions don't match the target */ gl_error( ctx, GL_INVALID_OPERATION, "glBindTexture" ); return; } -- cgit v1.2.3