init();
if(!gl_get_programiv) {
- fprintf(stderr, "Unable to fake the %s function. It is not supported by your OpenGL implementation.\n", __func__);
+ fprintf(stderr, "GLIAR: Unable to fake the %s function. It is not supported by your OpenGL implementation.\n", __func__);
return;
}
key = 0;
}
- if(key && (option = gliar_find_opt(cfglist, key)) && option->type == GLIAR_NUMBER) {
- *params = option->num_val;
- return;
+ if(key) {
+ char buf[256];
+ if(program == GL_VERTEX_PROGRAM_ARB) {
+ sprintf(buf, "v %s", key);
+ }
+ else if(program == GL_FRAGMENT_PROGRAM_ARB) {
+ sprintf(buf, "f %s", key);
+ }
+ key = buf;
+
+ if((option = gliar_find_opt(cfglist, key)) && option->type == GLIAR_NUMBER) {
+ *params = option->num_val;
+ return;
+ }
}
gl_get_programiv(program, pname, params);
void *glXGetProcAddress(const unsigned char *procname)
{
- if(!glx_get_proc_address) {
- glx_get_proc_address = dlsym(RTLD_NEXT, "glXGetProcAddress");
- if(!glx_get_proc_address) {
- return 0;
- }
- }
+ init();
- if(!strcmp((char*)procname, "glGetProgramivARB")) {
- char *overr_name = "gl_get_programiv";
- return glx_get_proc_address((unsigned char*)overr_name);
+ if(!strcmp((char*)procname, "glGetProgramivARB") || !strcmp((char*)procname, "glGetProgramiv")) {
+ return glGetProgramivARB;
}
return glx_get_proc_address(procname);
}
+
+void *glXGetProcAddressARB(const unsigned char *procname)
+{
+ return glXGetProcAddress(procname);
+}