static void InitSpecial(void) { GLubyte textureData[32 * 32]; float testAni = 16; int x, y; GLint err; for (x = 0; x < 32; x++) { for (y = 0; y < 32; y++) { if ((x < 16 && y < 16) || (x >= 16 && y >= 16)) textureData[y * 32 + x] = 0; else textureData[y * 32 + x] = 255; } } /* Create the tile texture. */ glGenTextures(4, texture); #ifdef MULTIPLE_VIEWPORTS /* Create Bilinear Filtered Texture */ glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 32, 32, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, textureData); /* Create Bilinear MipMapped Texture */ glBindTexture(GL_TEXTURE_2D, texture[1]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); err =gluBuild2DMipmaps(GL_TEXTURE_2D, GL_LUMINANCE, 32, 32, GL_LUMINANCE, GL_UNSIGNED_BYTE, textureData); /* Create Trilinear MipMapped Texture */ glBindTexture(GL_TEXTURE_2D, texture[2]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); err = gluBuild2DMipmaps(GL_TEXTURE_2D, GL_LUMINANCE, 32, 32, GL_LUMINANCE, GL_UNSIGNED_BYTE, textureData); #endif /* Create Anisotropic Texture */ glBindTexture(GL_TEXTURE_2D, texture[3]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameterfv(GL_TEXTURE_2D, (GLenum) GL_TEXTURE_MAX_ANISOTROPY_EXT, &testAni); glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 32, 32, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, textureData); glGetTexParameterfv(GL_TEXTURE_2D, (GLenum) GL_TEXTURE_MAX_ANISOTROPY_EXT, &testAni); printf("Current Anisotropy: %f", testAni); }
void Texture::bind(int slot ) { glActiveTextureARB(GL_TEXTURE0_ARB + slot); glEnable(target); GLfloat parm; glGetTexParameterfv(target, GL_TEXTURE_WRAP_S, &parm); if (flags & CLAMP) { if (parm != GL_CLAMP) { glTexParameteri(target,GL_TEXTURE_WRAP_S,GL_CLAMP); glTexParameteri(target,GL_TEXTURE_WRAP_T,GL_CLAMP); glTexParameteri(target,GL_TEXTURE_WRAP_R,GL_CLAMP); } } else if (flags & CLAMP_TO_EDGE) { if (parm != GL_CLAMP_TO_EDGE) { glTexParameteri(target,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE); glTexParameteri(target,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE); glTexParameteri(target,GL_TEXTURE_WRAP_R,GL_CLAMP_TO_EDGE); } } else { glTexParameteri(target,GL_TEXTURE_WRAP_S,GL_REPEAT); glTexParameteri(target,GL_TEXTURE_WRAP_T,GL_REPEAT); glTexParameteri(target,GL_TEXTURE_WRAP_R,GL_REPEAT); } glBindTexture(target, id); }
void graphics_Texture_getFilter(GLuint texID, graphics_Filter * filter) { glBindTexture(GL_TEXTURE_2D, texID); int fil; glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, &fil); switch(fil) { case GL_NEAREST: filter->minMode = graphics_FilterMode_nearest; filter->mipmapMode = graphics_FilterMode_none; break; case GL_LINEAR: filter->minMode = graphics_FilterMode_linear; filter->mipmapMode = graphics_FilterMode_none; break; case GL_NEAREST_MIPMAP_NEAREST: filter->minMode = graphics_FilterMode_nearest; filter->mipmapMode = graphics_FilterMode_nearest; break; case GL_NEAREST_MIPMAP_LINEAR: filter->minMode = graphics_FilterMode_nearest; filter->mipmapMode = graphics_FilterMode_linear; break; case GL_LINEAR_MIPMAP_NEAREST: filter->minMode = graphics_FilterMode_linear; filter->mipmapMode = graphics_FilterMode_nearest; break; case GL_LINEAR_MIPMAP_LINEAR: filter->minMode = graphics_FilterMode_linear; filter->mipmapMode = graphics_FilterMode_linear; break; } #ifndef EMSCRIPTEN if(filter->mipmapMode == graphics_FilterMode_none) { #endif filter->mipmapLodBias = 0.0f; #ifndef EMSCRIPTEN } else { glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, &filter->mipmapLodBias); } #endif glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &fil); filter->magMode = (fil == GL_LINEAR) ? graphics_FilterMode_linear : graphics_FilterMode_nearest; glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, &filter->maxAnisotropy); }
void __CGsampler_state::initSampler() { glGetTexParameteriv(texTarget, GL_TEXTURE_WRAP_S, (GLint*) &wrapS); glGetTexParameteriv(texTarget, GL_TEXTURE_WRAP_T, (GLint*) &wrapT); glGetTexParameteriv(texTarget, GL_TEXTURE_WRAP_R, (GLint*) &wrapR); glGetTexParameteriv(texTarget, GL_TEXTURE_BASE_LEVEL, &baseLevel); glGetTexParameteriv(texTarget, GL_TEXTURE_MAX_LEVEL, &maxLevel); glGetTexParameterfv(texTarget, GL_TEXTURE_MIN_LOD, &minLod); glGetTexParameterfv(texTarget, GL_TEXTURE_MAX_LOD, &maxLod); glGetTexParameterfv(texTarget, GL_TEXTURE_LOD_BIAS, &lodBias); glGetTexParameterfv(texTarget, GL_TEXTURE_BORDER_COLOR, (GLfloat*) &borderValues); glGetTexParameteriv(texTarget, GL_TEXTURE_MIN_FILTER, (GLint*) &minFilter); glGetTexParameteriv(texTarget, GL_TEXTURE_MAG_FILTER, (GLint*) &magFilter); glGetTexParameteriv(texTarget, GL_TEXTURE_COMPARE_MODE, (GLint*) &compareMode); glGetTexParameteriv(texTarget, GL_TEXTURE_COMPARE_FUNC, (GLint*) &compareFunc); glGetTexParameteriv(texTarget, GL_DEPTH_TEXTURE_MODE, (GLint*) &depthTextureMode); if ((magFilter == GL_LINEAR) && ((minFilter == GL_NEAREST_MIPMAP_NEAREST) || (minFilter == GL_LINEAR_MIPMAP_NEAREST))) { magnifyTransition = 0.5f; } else { magnifyTransition = 0.0f; } clampedLodBias = lodBias; trueBaseLevel = baseLevel; // needs clamping effectiveMaxLevel = maxLevels; // needs clamping clampedBorderValues = float4(borderValues[0], borderValues[1], borderValues[2], borderValues[3]); // needs clamping based on format prefilterMode = GL_NONE; }
static GLboolean test_texture_params(void) { GLuint tex[MAX_UNITS]; int i; int maxUnit; clear_errors(); glGenTextures(MaxTextureCombinedUnits, tex); /* set per-unit state */ for (i = 0; i < MaxTextureCombinedUnits; i++) { glActiveTexture(GL_TEXTURE0 + i); glBindTexture(GL_TEXTURE_2D, tex[i]); glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, Random[i]); } /* check per-unit state */ for (i = 0; i < MaxTextureCombinedUnits; i++) { GLfloat v[4]; glActiveTexture(GL_TEXTURE0 + i); glBindTexture(GL_TEXTURE_2D, tex[i]); /* any per-unit state will do: */ glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, v); if (!equal4v(v, Random[i])) { printf("Setting per-unit param state failed for unit %d\n", i); report4v(Random[i], v); return GL_FALSE; } } /* there should be no errors at this point */ if (!piglit_check_gl_error(GL_NO_ERROR)) { return GL_FALSE; } maxUnit = MAX2(MaxTextureCombinedUnits, MaxTextureCoordUnits); /* this should generate an error */ glActiveTexture(GL_TEXTURE0 + maxUnit); /* INVALID_ENUM is expected */ if (!piglit_check_gl_error(GL_INVALID_ENUM)) { return GL_FALSE; } return GL_TRUE; }
// any getTexParameter(GLenum target, GLenum pname); bool JSB_glGetTexParameterfv(JSContext *cx, uint32_t argc, jsval *vp) { JSB_PRECONDITION2( argc == 2, cx, false, "JSB_glGetTexParameterfv: Invalid number of arguments" ); JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; uint32_t arg0, arg1; ok &= jsval_to_uint( cx, args.get(0), &arg0 ); ok &= jsval_to_uint( cx, args.get(1), &arg1 ); JSB_PRECONDITION2(ok, cx, false, "JSB_glGetTexParameterfv: Error processing arguments"); GLfloat param; glGetTexParameterfv(arg0, arg1, ¶m); args.rval().set(DOUBLE_TO_JSVAL(param)); return true; }
// any getTexParameter(GLenum target, GLenum pname); JSBool JSB_glGetTexParameterfv(JSContext *cx, uint32_t argc, jsval *vp) { JSB_PRECONDITION2( argc == 2, cx, JS_FALSE, "JSB_glGetTexParameterfv: Invalid number of arguments" ); jsval *argvp = JS_ARGV(cx,vp); JSBool ok = JS_TRUE; uint32_t arg0, arg1; ok &= jsval_to_uint( cx, *argvp++, &arg0 ); ok &= jsval_to_uint( cx, *argvp++, &arg1 ); JSB_PRECONDITION2(ok, cx, JS_FALSE, "JSB_glGetTexParameterfv: Error processing arguments"); GLfloat param; glGetTexParameterfv(arg0, arg1, ¶m); JS_SET_RVAL(cx, vp, DOUBLE_TO_JSVAL(param)); return JS_TRUE; }
int __glXDisp_GetTexParameterfv(__GLXclientState *cl, GLbyte *pc) { GLenum pname; GLint compsize; __GLXcontext *cx; ClientPtr client = cl->client; int error; GLfloat answerBuffer[200]; char *answer; cx = __glXForceCurrent(cl, __GLX_GET_SINGLE_CONTEXT_TAG(pc), &error); if (!cx) { return error; } pc += __GLX_SINGLE_HDR_SIZE; pname = *(GLenum *)(pc + 4); compsize = __glGetTexParameterfv_size(pname); if (compsize < 0) compsize = 0; __GLX_GET_ANSWER_BUFFER(answer,cl,compsize*4,4); __glXClearErrorOccured(); glGetTexParameterfv( *(GLenum *)(pc + 0), *(GLenum *)(pc + 4), (GLfloat *) answer ); if (__glXErrorOccured()) { __GLX_BEGIN_REPLY(0); __GLX_PUT_SIZE(0); __GLX_SEND_HEADER(); } else if (compsize == 1) { __GLX_BEGIN_REPLY(0); __GLX_PUT_SIZE(1); __GLX_PUT_FLOAT(); __GLX_SEND_HEADER(); } else { __GLX_BEGIN_REPLY(compsize*4); __GLX_PUT_SIZE(compsize); __GLX_SEND_HEADER(); __GLX_SEND_FLOAT_ARRAY(compsize); } return Success; }
void DisplayScene() { // kolor tła - zawartość bufora koloru glClearColor(1.0, 1.0, 1.0, 1.0); // czyszczenie bufora koloru i bufora głębokości glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // wybór macierzy modelowania glMatrixMode(GL_MODELVIEW); // macierz modelowania = macierz jednostkowa glLoadIdentity(); // przesunięcie układu współrzędnych obiektów do środka bryły odcinania glTranslatef(0.0, 0.0, -(near + far) / 2); // obroty obiektu glRotatef(rotatex, 1.0, 0.0, 0.0); glRotatef(rotatez, 0.0, 0.0, 1.0); // skalowanie obiektu - klawisze "+" i "-" glScalef(scale, scale, scale); // włączenie testu bufora głębokości glEnable(GL_DEPTH_TEST); // włączenie teksturowania dwuwymiarowego glEnable(GL_TEXTURE_2D); // filtr powiększający glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // filtr pomniejszający glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter); // dowiązanie wybranej tekstury glBindTexture(GL_TEXTURE_2D, texture); // ustawienie parametów środowiska tekstur glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); // utworzenie kwadryki GLUquadricObj *quadobj = gluNewQuadric(); // styl (wygląd) generowanej kwadryki gluQuadricDrawStyle(quadobj, GLU_FILL); // sposób generacji wektorów normalnych gluQuadricNormals(quadobj, GLU_SMOOTH); // nałożenie tekstury na kwadrykę gluQuadricTexture(quadobj, GL_TRUE); // narysowanie kuli gluSphere(quadobj, 1.0, 30, 30); // usunięcie kwadryki gluDeleteQuadric(quadobj); // wyłączenie teksturowania dwuwymiarowego glDisable(GL_TEXTURE_2D); // informacje o wybranych parametrach bieżącej tekstury char string[200]; GLfloat var; glColor3fv(Black); // wartość priorytetu tekstury glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, &var); sprintf_s(string, "GL_TEXTURE_PRIORITY = %f", var); DrawString(2, 2, string); // czy tekstura jest rezydentna glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_RESIDENT, &var); if (var == GL_FALSE) strcpy_s(string, "GL_TEXTURE_RESIDENT = GL_FALSE"); else strcpy_s(string, "GL_TEXTURE_RESIDENT = GL_TRUE"); DrawString(2, 16, string); // szerokość tekstury (poziom 0) glGetTexLevelParameterfv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &var); sprintf_s(string, "GL_TEXTURE_WIDTH = %f", var); DrawString(2, 30, string); // wysokość tekstury (poziom 0) glGetTexLevelParameterfv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &var); sprintf_s(string, "GL_TEXTURE_HEIGHT = %f", var); DrawString(2, 46, string); // skierowanie poleceñ do wykonania glFlush(); // zamiana buforów koloru glutSwapBuffers(); }
M(void, glGetTexParameterfv, jint target, jint pname, jobject params) { glGetTexParameterfv(target, pname, BUFF(GLfloat, params)); }
void GLES2StateCacheManagerImp::getTexParameterfv(GLenum target, GLenum pname, GLfloat *params) { OGRE_CHECK_GL_ERROR(glGetTexParameterfv(target, pname, params)); }
void gl4es_glGetTextureParameterfv(GLuint texture, GLenum target, GLenum pname, GLfloat *params) { text(glGetTexParameterfv(target, pname, params)); }
static void Key(unsigned char key, int x, int y) { int i; switch (key) { case 'h': for (i = 0; keyList[i][0] != NULL; i++) { printf("%-20s %s\n", keyList[i][0], keyList[i][1]); } break; case 'T': zTranslate += 0.25; glutPostRedisplay(); break; case 't': zTranslate -= 0.25; glutPostRedisplay(); break; case 's': doSphere = !doSphere; if (doSphere) { glTexGeniv(GL_S, GL_TEXTURE_GEN_MODE, sphereMap); glTexGeniv(GL_T, GL_TEXTURE_GEN_MODE, sphereMap); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); } else { glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); } glutPostRedisplay(); break; case 'r': UnInit(); Init(); glutPostRedisplay(); break; case 'C': currentList = CUBE; glutPostRedisplay(); break; case 'S': currentList = SQUARE; glutPostRedisplay(); break; case 'P': currentList = PUSHPOP; glutPostRedisplay(); break; case 'G': { GLint name; GLfloat priority; GLboolean isTex, resident, residences[NUM_TEXTURES]; glGetIntegerv(GL_TEXTURE_2D_BINDING_EXT, &name); glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY_EXT, &priority); isTex = glIsTextureEXT(name); resident = glAreTexturesResidentEXT(NUM_TEXTURES, texNames, residences); fprintf(stdout, "\tname=%d priority=%f allResident=%d isTex=%d\n", name, priority, resident, isTex); } glutPostRedisplay(); break; case '0': magFilter = nr; glutPostRedisplay(); break; case '1': magFilter = ln; glutPostRedisplay(); break; case '2': minFilter = nr; glutPostRedisplay(); break; case '3': minFilter = ln; glutPostRedisplay(); break; case '4': minFilter = nr_mipmap_nr; glutPostRedisplay(); break; case '5': minFilter = nr_mipmap_ln; glutPostRedisplay(); break; case '6': minFilter = ln_mipmap_nr; glutPostRedisplay(); break; case '7': minFilter = ln_mipmap_ln; glutPostRedisplay(); break; case 27: exit(0); } }
void glGetTexParameterfvLogged(GLenum target, GLenum pname, GLfloat *params) { printf("glGetTexParameterfv(%s, %s, %p)\n", GLEnumName(target), GLEnumName(pname), params); glGetTexParameterfv(target, pname, params); }
void GL::getTexParameterfv(Enum target, Enum pname, Float * params) { glGetTexParameterfv(target, pname, params); CHECK_GL_ERROR3(glGetTexParameterfv, target, pname, params); }
void gl4es_glGetMultiTexParameterfv(GLenum texunit, GLenum target, GLenum pname, GLfloat *params) { text(glGetTexParameterfv(target, pname, params)); }
void get_tex_parameterfv(texture_target_t target, get_texture_parameter_t pname, gl::float_t * params) { glGetTexParameterfv(static_cast<GLenum>(target), static_cast<GLenum>(pname), params); }
void gles2_glGetTexParameterfv(void *_glfuncs, GLenum target, GLenum pname, GLfloat* params) { glGetTexParameterfv(target, pname, params); }
void _glGetTexParameterfv( int target,int pname,Array<Float> params,int offset ) { glGetTexParameterfv( target,pname,¶ms[offset] ); }
void GraphicsContext3D::getTexParameterfv(GC3Denum target, GC3Denum paramName, GC3Dfloat* value) { makeContextCurrent(); glGetTexParameterfv(target, paramName, value); }
void Texture::getParamf(GLenum pname, GLfloat *value) { glGetTexParameterfv(target, pname, value); }
static void GL_CheckExtensions (void) { int swap_control; // // multitexture // if (COM_CheckParm("-nomtex")) Con_Warning ("Mutitexture disabled at command line\n"); else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_multitexture")) { GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMultiTexCoord2fARB"); GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glActiveTextureARB"); if (GL_MTexCoord2fFunc && GL_SelectTextureFunc) { Con_Printf("FOUND: ARB_multitexture\n"); TEXTURE0 = GL_TEXTURE0_ARB; TEXTURE1 = GL_TEXTURE1_ARB; gl_mtexable = true; } else { Con_Warning ("Couldn't link to multitexture functions\n"); } } else if (GL_ParseExtensionList(gl_extensions, "GL_SGIS_multitexture")) { GL_MTexCoord2fFunc = (PFNGLMULTITEXCOORD2FARBPROC) SDL_GL_GetProcAddress("glMTexCoord2fSGIS"); GL_SelectTextureFunc = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glSelectTextureSGIS"); if (GL_MTexCoord2fFunc && GL_SelectTextureFunc) { Con_Printf("FOUND: SGIS_multitexture\n"); TEXTURE0 = TEXTURE0_SGIS; TEXTURE1 = TEXTURE1_SGIS; gl_mtexable = true; } else { Con_Warning ("Couldn't link to multitexture functions\n"); } } else { Con_Warning ("multitexture not supported (extension not found)\n"); } // // texture_env_combine // if (COM_CheckParm("-nocombine")) Con_Warning ("texture_env_combine disabled at command line\n"); else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_texture_env_combine")) { Con_Printf("FOUND: ARB_texture_env_combine\n"); gl_texture_env_combine = true; } else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_env_combine")) { Con_Printf("FOUND: EXT_texture_env_combine\n"); gl_texture_env_combine = true; } else { Con_Warning ("texture_env_combine not supported\n"); } // // texture_env_add // if (COM_CheckParm("-noadd")) Con_Warning ("texture_env_add disabled at command line\n"); else if (GL_ParseExtensionList(gl_extensions, "GL_ARB_texture_env_add")) { Con_Printf("FOUND: ARB_texture_env_add\n"); gl_texture_env_add = true; } else if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_env_add")) { Con_Printf("FOUND: EXT_texture_env_add\n"); gl_texture_env_add = true; } else { Con_Warning ("texture_env_add not supported\n"); } // // swap control (the "after SDL_SetVideoMode" part) // if (!gl_swap_control) { Con_Warning ("vertical sync not supported (SDL_GL_SetAttribute failed)\n"); } else if (SDL_GL_GetAttribute(SDL_GL_SWAP_CONTROL, &swap_control) == -1) { gl_swap_control = false; Con_Warning ("vertical sync not supported (SDL_GL_GetAttribute failed)\n"); } else if ((vid_vsync.value && swap_control != 1) || (!vid_vsync.value && swap_control != 0)) { gl_swap_control = false; Con_Warning ("vertical sync not supported (swap_control doesn't match vid_vsync)\n"); } else { Con_Printf("FOUND: SDL_GL_SWAP_CONTROL\n"); } // // anisotropic filtering // if (GL_ParseExtensionList(gl_extensions, "GL_EXT_texture_filter_anisotropic")) { float test1,test2; GLuint tex; // test to make sure we really have control over it // 1.0 and 2.0 should always be legal values glGenTextures(1, &tex); glBindTexture (GL_TEXTURE_2D, tex); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.0f); glGetTexParameterfv (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, &test1); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0f); glGetTexParameterfv (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, &test2); glDeleteTextures(1, &tex); if (test1 == 1 && test2 == 2) { Con_Printf("FOUND: EXT_texture_filter_anisotropic\n"); gl_anisotropy_able = true; } else { Con_Warning ("anisotropic filtering locked by driver. Current driver setting is %f\n", test1); } //get max value either way, so the menu and stuff know it glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &gl_max_anisotropy); if (gl_max_anisotropy < 2) { gl_anisotropy_able = false; gl_max_anisotropy = 1; Con_Warning ("anisotropic filtering broken: disabled\n"); } } else { gl_max_anisotropy = 1; Con_Warning ("texture_filter_anisotropic not supported\n"); } }
uintptr_t processFn(struct fnargs* args, char* parg) { uintptr_t ret = 0; switch (args->fn) { case glfnUNDEFINED: abort(); // bad glfn break; case glfnActiveTexture: glActiveTexture((GLenum)args->a0); break; case glfnAttachShader: glAttachShader((GLint)args->a0, (GLint)args->a1); break; case glfnBindAttribLocation: glBindAttribLocation((GLint)args->a0, (GLint)args->a1, (GLchar*)args->a2); break; case glfnBindBuffer: glBindBuffer((GLenum)args->a0, (GLuint)args->a1); break; case glfnBindFramebuffer: glBindFramebuffer((GLenum)args->a0, (GLint)args->a1); break; case glfnBindRenderbuffer: glBindRenderbuffer((GLenum)args->a0, (GLint)args->a1); break; case glfnBindTexture: glBindTexture((GLenum)args->a0, (GLint)args->a1); break; case glfnBlendColor: glBlendColor(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); break; case glfnBlendEquation: glBlendEquation((GLenum)args->a0); break; case glfnBlendEquationSeparate: glBlendEquationSeparate((GLenum)args->a0, (GLenum)args->a1); break; case glfnBlendFunc: glBlendFunc((GLenum)args->a0, (GLenum)args->a1); break; case glfnBlendFuncSeparate: glBlendFuncSeparate((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLenum)args->a3); break; case glfnBufferData: glBufferData((GLenum)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg, (GLenum)args->a2); break; case glfnBufferSubData: glBufferSubData((GLenum)args->a0, (GLint)args->a1, (GLsizeiptr)args->a2, (GLvoid*)parg); break; case glfnCheckFramebufferStatus: ret = glCheckFramebufferStatus((GLenum)args->a0); break; case glfnClear: glClear((GLenum)args->a0); break; case glfnClearColor: glClearColor(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); break; case glfnClearDepthf: glClearDepthf(*(GLfloat*)&args->a0); break; case glfnClearStencil: glClearStencil((GLint)args->a0); break; case glfnColorMask: glColorMask((GLboolean)args->a0, (GLboolean)args->a1, (GLboolean)args->a2, (GLboolean)args->a3); break; case glfnCompileShader: glCompileShader((GLint)args->a0); break; case glfnCompressedTexImage2D: glCompressedTexImage2D((GLenum)args->a0, (GLint)args->a1, (GLenum)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLsizeiptr)args->a6, (GLvoid*)parg); break; case glfnCompressedTexSubImage2D: glCompressedTexSubImage2D((GLenum)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLenum)args->a6, (GLsizeiptr)args->a7, (GLvoid*)parg); break; case glfnCopyTexImage2D: glCopyTexImage2D((GLenum)args->a0, (GLint)args->a1, (GLenum)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLint)args->a6, (GLint)args->a7); break; case glfnCopyTexSubImage2D: glCopyTexSubImage2D((GLenum)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLint)args->a6, (GLint)args->a7); break; case glfnCreateProgram: ret = glCreateProgram(); break; case glfnCreateShader: ret = glCreateShader((GLenum)args->a0); break; case glfnCullFace: glCullFace((GLenum)args->a0); break; case glfnDeleteBuffer: glDeleteBuffers(1, (const GLuint*)(&args->a0)); break; case glfnDeleteFramebuffer: glDeleteFramebuffers(1, (const GLuint*)(&args->a0)); break; case glfnDeleteProgram: glDeleteProgram((GLint)args->a0); break; case glfnDeleteRenderbuffer: glDeleteRenderbuffers(1, (const GLuint*)(&args->a0)); break; case glfnDeleteShader: glDeleteShader((GLint)args->a0); break; case glfnDeleteTexture: glDeleteTextures(1, (const GLuint*)(&args->a0)); break; case glfnDepthFunc: glDepthFunc((GLenum)args->a0); break; case glfnDepthMask: glDepthMask((GLboolean)args->a0); break; case glfnDepthRangef: glDepthRangef(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1); break; case glfnDetachShader: glDetachShader((GLint)args->a0, (GLint)args->a1); break; case glfnDisable: glDisable((GLenum)args->a0); break; case glfnDisableVertexAttribArray: glDisableVertexAttribArray((GLint)args->a0); break; case glfnDrawArrays: glDrawArrays((GLenum)args->a0, (GLint)args->a1, (GLint)args->a2); break; case glfnDrawElements: glDrawElements((GLenum)args->a0, (GLint)args->a1, (GLenum)args->a2, (void*)args->a3); break; case glfnEnable: glEnable((GLenum)args->a0); break; case glfnEnableVertexAttribArray: glEnableVertexAttribArray((GLint)args->a0); break; case glfnFinish: glFinish(); break; case glfnFlush: glFlush(); break; case glfnFramebufferRenderbuffer: glFramebufferRenderbuffer((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLint)args->a3); break; case glfnFramebufferTexture2D: glFramebufferTexture2D((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLint)args->a3, (GLint)args->a4); break; case glfnFrontFace: glFrontFace((GLenum)args->a0); break; case glfnGenBuffer: glGenBuffers(1, (GLuint*)&ret); break; case glfnGenFramebuffer: glGenFramebuffers(1, (GLuint*)&ret); break; case glfnGenRenderbuffer: glGenRenderbuffers(1, (GLuint*)&ret); break; case glfnGenTexture: glGenTextures(1, (GLuint*)&ret); break; case glfnGenerateMipmap: glGenerateMipmap((GLenum)args->a0); break; case glfnGetActiveAttrib: glGetActiveAttrib( (GLuint)args->a0, (GLuint)args->a1, (GLsizei)args->a2, NULL, (GLint*)&ret, (GLenum*)args->a3, (GLchar*)parg); break; case glfnGetActiveUniform: glGetActiveUniform( (GLuint)args->a0, (GLuint)args->a1, (GLsizei)args->a2, NULL, (GLint*)&ret, (GLenum*)args->a3, (GLchar*)parg); break; case glfnGetAttachedShaders: glGetAttachedShaders((GLuint)args->a0, (GLsizei)args->a1, (GLsizei*)&ret, (GLuint*)parg); break; case glfnGetAttribLocation: ret = glGetAttribLocation((GLint)args->a0, (GLchar*)args->a1); break; case glfnGetBooleanv: glGetBooleanv((GLenum)args->a0, (GLboolean*)parg); break; case glfnGetBufferParameteri: glGetBufferParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)&ret); break; case glfnGetFloatv: glGetFloatv((GLenum)args->a0, (GLfloat*)parg); break; case glfnGetIntegerv: glGetIntegerv((GLenum)args->a0, (GLint*)parg); break; case glfnGetError: ret = glGetError(); break; case glfnGetFramebufferAttachmentParameteriv: glGetFramebufferAttachmentParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLint*)&ret); break; case glfnGetProgramiv: glGetProgramiv((GLint)args->a0, (GLenum)args->a1, (GLint*)&ret); break; case glfnGetProgramInfoLog: glGetProgramInfoLog((GLuint)args->a0, (GLsizei)args->a1, 0, (GLchar*)parg); break; case glfnGetRenderbufferParameteriv: glGetRenderbufferParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)&ret); break; case glfnGetShaderiv: glGetShaderiv((GLint)args->a0, (GLenum)args->a1, (GLint*)&ret); break; case glfnGetShaderInfoLog: glGetShaderInfoLog((GLuint)args->a0, (GLsizei)args->a1, 0, (GLchar*)parg); break; case glfnGetShaderPrecisionFormat: glGetShaderPrecisionFormat((GLenum)args->a0, (GLenum)args->a1, (GLint*)parg, &((GLint*)parg)[2]); break; case glfnGetShaderSource: glGetShaderSource((GLuint)args->a0, (GLsizei)args->a1, 0, (GLchar*)parg); break; case glfnGetString: ret = (uintptr_t)glGetString((GLenum)args->a0); break; case glfnGetTexParameterfv: glGetTexParameterfv((GLenum)args->a0, (GLenum)args->a1, (GLfloat*)parg); break; case glfnGetTexParameteriv: glGetTexParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)parg); break; case glfnGetUniformfv: glGetUniformfv((GLuint)args->a0, (GLint)args->a1, (GLfloat*)parg); break; case glfnGetUniformiv: glGetUniformiv((GLuint)args->a0, (GLint)args->a1, (GLint*)parg); break; case glfnGetUniformLocation: ret = glGetUniformLocation((GLint)args->a0, (GLchar*)args->a1); break; case glfnGetVertexAttribfv: glGetVertexAttribfv((GLuint)args->a0, (GLenum)args->a1, (GLfloat*)parg); break; case glfnGetVertexAttribiv: glGetVertexAttribiv((GLuint)args->a0, (GLenum)args->a1, (GLint*)parg); break; case glfnHint: glHint((GLenum)args->a0, (GLenum)args->a1); break; case glfnIsBuffer: ret = glIsBuffer((GLint)args->a0); break; case glfnIsEnabled: ret = glIsEnabled((GLenum)args->a0); break; case glfnIsFramebuffer: ret = glIsFramebuffer((GLint)args->a0); break; case glfnIsProgram: ret = glIsProgram((GLint)args->a0); break; case glfnIsRenderbuffer: ret = glIsRenderbuffer((GLint)args->a0); break; case glfnIsShader: ret = glIsShader((GLint)args->a0); break; case glfnIsTexture: ret = glIsTexture((GLint)args->a0); break; case glfnLineWidth: glLineWidth(*(GLfloat*)&args->a0); break; case glfnLinkProgram: glLinkProgram((GLint)args->a0); break; case glfnPixelStorei: glPixelStorei((GLenum)args->a0, (GLint)args->a1); break; case glfnPolygonOffset: glPolygonOffset(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1); break; case glfnReadPixels: glReadPixels((GLint)args->a0, (GLint)args->a1, (GLsizei)args->a2, (GLsizei)args->a3, (GLenum)args->a4, (GLenum)args->a5, (void*)parg); break; case glfnReleaseShaderCompiler: glReleaseShaderCompiler(); break; case glfnRenderbufferStorage: glRenderbufferStorage((GLenum)args->a0, (GLenum)args->a1, (GLint)args->a2, (GLint)args->a3); break; case glfnSampleCoverage: glSampleCoverage(*(GLfloat*)&args->a0, (GLboolean)args->a1); break; case glfnScissor: glScissor((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3); break; case glfnShaderSource: #if defined(os_ios) || defined(os_osx) glShaderSource((GLuint)args->a0, (GLsizei)args->a1, (const GLchar *const *)args->a2, NULL); #else glShaderSource((GLuint)args->a0, (GLsizei)args->a1, (const GLchar **)args->a2, NULL); #endif break; case glfnStencilFunc: glStencilFunc((GLenum)args->a0, (GLint)args->a1, (GLuint)args->a2); break; case glfnStencilFuncSeparate: glStencilFuncSeparate((GLenum)args->a0, (GLenum)args->a1, (GLint)args->a2, (GLuint)args->a3); break; case glfnStencilMask: glStencilMask((GLuint)args->a0); break; case glfnStencilMaskSeparate: glStencilMaskSeparate((GLenum)args->a0, (GLuint)args->a1); break; case glfnStencilOp: glStencilOp((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2); break; case glfnStencilOpSeparate: glStencilOpSeparate((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLenum)args->a3); break; case glfnTexImage2D: glTexImage2D( (GLenum)args->a0, (GLint)args->a1, (GLint)args->a2, (GLsizei)args->a3, (GLsizei)args->a4, 0, // border (GLenum)args->a5, (GLenum)args->a6, (const GLvoid*)parg); break; case glfnTexSubImage2D: glTexSubImage2D( (GLenum)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLsizei)args->a4, (GLsizei)args->a5, (GLenum)args->a6, (GLenum)args->a7, (const GLvoid*)parg); break; case glfnTexParameterf: glTexParameterf((GLenum)args->a0, (GLenum)args->a1, *(GLfloat*)&args->a2); break; case glfnTexParameterfv: glTexParameterfv((GLenum)args->a0, (GLenum)args->a1, (GLfloat*)parg); break; case glfnTexParameteri: glTexParameteri((GLenum)args->a0, (GLenum)args->a1, (GLint)args->a2); break; case glfnTexParameteriv: glTexParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)parg); break; case glfnUniform1f: glUniform1f((GLint)args->a0, *(GLfloat*)&args->a1); break; case glfnUniform1fv: glUniform1fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniform1i: glUniform1i((GLint)args->a0, (GLint)args->a1); break; case glfnUniform1iv: glUniform1iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniform2f: glUniform2f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2); break; case glfnUniform2fv: glUniform2fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniform2i: glUniform2i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2); break; case glfnUniform2iv: glUniform2iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniform3f: glUniform3f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); break; case glfnUniform3fv: glUniform3fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniform3i: glUniform3i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3); break; case glfnUniform3iv: glUniform3iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniform4f: glUniform4f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3, *(GLfloat*)&args->a4); break; case glfnUniform4fv: glUniform4fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniform4i: glUniform4i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLint)args->a4); break; case glfnUniform4iv: glUniform4iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); break; case glfnUniformMatrix2fv: glUniformMatrix2fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg); break; case glfnUniformMatrix3fv: glUniformMatrix3fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg); break; case glfnUniformMatrix4fv: glUniformMatrix4fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg); break; case glfnUseProgram: glUseProgram((GLint)args->a0); break; case glfnValidateProgram: glValidateProgram((GLint)args->a0); break; case glfnVertexAttrib1f: glVertexAttrib1f((GLint)args->a0, *(GLfloat*)&args->a1); break; case glfnVertexAttrib1fv: glVertexAttrib1fv((GLint)args->a0, (GLfloat*)parg); break; case glfnVertexAttrib2f: glVertexAttrib2f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2); break; case glfnVertexAttrib2fv: glVertexAttrib2fv((GLint)args->a0, (GLfloat*)parg); break; case glfnVertexAttrib3f: glVertexAttrib3f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); break; case glfnVertexAttrib3fv: glVertexAttrib3fv((GLint)args->a0, (GLfloat*)parg); break; case glfnVertexAttrib4f: glVertexAttrib4f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3, *(GLfloat*)&args->a4); break; case glfnVertexAttrib4fv: glVertexAttrib4fv((GLint)args->a0, (GLfloat*)parg); break; case glfnVertexAttribPointer: glVertexAttribPointer((GLuint)args->a0, (GLint)args->a1, (GLenum)args->a2, (GLboolean)args->a3, (GLsizei)args->a4, (const GLvoid*)args->a5); break; case glfnViewport: glViewport((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3); break; } return ret; }