static void GLAPIENTRY _mesa_GetTexGendv( GLenum coord, GLenum pname, GLdouble *params ) { struct gl_texture_unit *texUnit; struct gl_texgen *texgen; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexGendv(current unit)"); return; } texUnit = _mesa_get_current_tex_unit(ctx); texgen = get_texgen(texUnit, coord); if (!texgen) { _mesa_error(ctx, GL_INVALID_ENUM, "glGetTexGendv(coord)"); return; } switch (pname) { case GL_TEXTURE_GEN_MODE: params[0] = ENUM_TO_DOUBLE(texgen->Mode); break; case GL_OBJECT_PLANE: COPY_4V(params, texgen->ObjectPlane); break; case GL_EYE_PLANE: COPY_4V(params, texgen->EyePlane); break; default: _mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); } }
void gl_GetTexGendv( GLcontext *ctx, GLenum coord, GLenum pname, GLdouble *params ) { if (INSIDE_BEGIN_END(ctx)) { gl_error( ctx, GL_INVALID_OPERATION, "glGetTexGendv" ); return; } switch( coord ) { case GL_S: if (pname==GL_TEXTURE_GEN_MODE) { params[0] = ENUM_TO_DOUBLE(ctx->Texture.GenModeS); } else if (pname==GL_OBJECT_PLANE) { COPY_4V( params, ctx->Texture.ObjectPlaneS ); } else if (pname==GL_EYE_PLANE) { COPY_4V( params, ctx->Texture.EyePlaneS ); } else { gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); return; } break; case GL_T: if (pname==GL_TEXTURE_GEN_MODE) { params[0] = ENUM_TO_DOUBLE(ctx->Texture.GenModeT); } else if (pname==GL_OBJECT_PLANE) { COPY_4V( params, ctx->Texture.ObjectPlaneT ); } else if (pname==GL_EYE_PLANE) { COPY_4V( params, ctx->Texture.EyePlaneT ); } else { gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); return; } break; case GL_R: if (pname==GL_TEXTURE_GEN_MODE) { params[0] = ENUM_TO_DOUBLE(ctx->Texture.GenModeR); } else if (pname==GL_OBJECT_PLANE) { COPY_4V( params, ctx->Texture.ObjectPlaneR ); } else if (pname==GL_EYE_PLANE) { COPY_4V( params, ctx->Texture.EyePlaneR ); } else { gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); return; } break; case GL_Q: if (pname==GL_TEXTURE_GEN_MODE) { params[0] = ENUM_TO_DOUBLE(ctx->Texture.GenModeQ); } else if (pname==GL_OBJECT_PLANE) { COPY_4V( params, ctx->Texture.ObjectPlaneQ ); } else if (pname==GL_EYE_PLANE) { COPY_4V( params, ctx->Texture.EyePlaneQ ); } else { gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(pname)" ); return; } break; default: gl_error( ctx, GL_INVALID_ENUM, "glGetTexGendv(coord)" ); return; } }