02-07-2008, 06:22 PM,
|
|
abs1nth
Senior Member
   
|
Posts: 358
Threads: 5
Joined: Sep 2005
|
|
forget my last post, that was completely wrong, but thanks to accesses to a affected machine, i figured it out ;-)
glUniform1f() etc is only available in opengl 2.0, previously the same function was called glUniform1fARB(), so when opengl 2.0 is not available, we get the crashes.
please apply (something like) the patch as i'm away from home.
also, i noted if you got an old preferences file which has no entry for shaders, the default is ON - this should probably changed.
patch:
Code: Index: shader.cpp
===================================================================
--- shader.cpp (revision 1936)
+++ shader.cpp (working copy)
@@ -133,54 +133,69 @@
{
Enable();
+
//set passed variable information for matrices
/*int mat_loc = glGetUniformLocationARB(program, "prev_modelview");
- if (mat_loc >= 0) glUniformMatrix4fv(mat_loc, 1, GL_FALSE, game.graphics.GetPrevModelView());
+ if (mat_loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniformMatrix4fv(mat_loc, 1, GL_FALSE, game.graphics.GetPrevModelView()) : glUniformMatrix4fvARB(mat_loc, 1, GL_FALSE, game.graphics.GetPrevModelView()) ;
mat_loc = glGetUniformLocationARB(program, "prev_modelviewproj");
- if (mat_loc >= 0) glUniformMatrix4fv(mat_loc, 1, GL_FALSE, game.graphics.GetPrevModelViewProj());*/
+ if (mat_loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniformMatrix4fv(mat_loc, 1, GL_FALSE, game.graphics.GetPrevModelViewProj()) : glUniformMatrix4fvARB(mat_loc, 1, GL_FALSE, game.graphics.GetPrevModelViewProj());*/
int loc = glGetUniformLocationARB(program, "blurfactor");
- if (loc >= 0) glUniform1f(loc, game.graphics.GetTrueFPS()*0.015);
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, game.graphics.GetTrueFPS()*0.015) : glUniform1fARB(loc, game.graphics.GetTrueFPS()*0.015);
loc = glGetUniformLocationARB(program, "blurfactorx");
- if (loc >= 0) glUniform1f(loc, game.graphics.GetW()/640.0);
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, game.graphics.GetW()/640.0) : glUniform1fARB(loc, game.graphics.GetW()/640.0);
loc = glGetUniformLocationARB(program, "blurfactory");
- if (loc >= 0) glUniform1f(loc, game.graphics.GetH()/480.0);
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, game.graphics.GetH()/480.0) : glUniform1fARB(loc, game.graphics.GetH()/480.0);
loc = glGetUniformLocationARB(program, "screenw");
- if (loc >= 0) glUniform1f(loc, game.graphics.GetW());
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, game.graphics.GetW()) : glUniform1fARB(loc, game.graphics.GetW());
loc = glGetUniformLocationARB(program, "screenh");
- if (loc >= 0) glUniform1f(loc, game.graphics.GetH());
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, game.graphics.GetH()) : glUniform1fARB(loc, game.graphics.GetH());
const QUATERNION & lightpos(game.graphics.GetLightPosition());
VERTEX front;
front.z = -1;
loc = glGetUniformLocationARB(program, "lightposition");
front = lightpos.RotateVec(front);
- if (loc >= 0) glUniform3f(loc, front.x, front.y, front.z);
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform3f(loc, front.x, front.y, front.z) : glUniform3fARB(loc, front.x, front.y, front.z);
/*VERTEX eyelightpos(game.cam.dir.RotateVec(front));
loc = glGetUniformLocationARB(program, "eyelightposition");
- if (loc >= 0) glUniform3f(loc, eyelightpos.x, eyelightpos.y, eyelightpos.z);*/
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform3f(loc, eyelightpos.x, eyelightpos.y, eyelightpos.z) : glUniform3fARB(loc, eyelightpos.x, eyelightpos.y, eyelightpos.z);*/
/*loc = glGetUniformLocationARB(program, "screenratio");
- if (loc >= 0) glUniform1f(loc, game.graphics.GetH()/game.graphics.GetW());
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, game.graphics.GetH()/game.graphics.GetW()) : glUniform1fARB(loc, game.graphics.GetH()/game.graphics.GetW());
loc = glGetUniformLocationARB(program, "screenratio_over2");
- if (loc >= 0) glUniform1f(loc, (game.graphics.GetH()/game.graphics.GetW())*0.5);*/
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, (game.graphics.GetH()/game.graphics.GetW())*0.5) : glUniform1fARB(loc, (game.graphics.GetH()/game.graphics.GetW())*0.5);*/
float samples = 8;
loc = glGetUniformLocationARB(program, "samples");
- if (loc >= 0) glUniform1f(loc, samples);
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, samples) : glUniform1fARB(loc, samples);
loc = glGetUniformLocationARB(program, "sm1inv");
- if (loc >= 0) glUniform1f(loc, 1.0/(samples-1.0));
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, 1.0/(samples-1.0)) : glUniform1fARB(loc, 1.0/(samples-1.0));
loc = glGetUniformLocationARB(program, "w");
- if (loc >= 0) glUniform1f(loc, 1.0/samples);
+ if (loc >= 0)
+ (GLEW_VERSION_2_0) ? glUniform1f(loc, 1.0/samples) : glUniform1fARB(loc, 1.0/samples);
//cout << game.graphics.GetTrueFPS() << endl;
}
|
|
|