in OpenGL 2.x üblichen GLSL Statecalls durch Attribute und Uniforms zu ersetzen, damit der Shader code weitgehenst identisch ist. Klappt z.B. für meine Vertexdaten
schon hervorragend, hier verwende ich anstelle von gl_Vertex ein Vertex Attibut ...
Nun versuche ich gl_ModelViewProjectionMatrix durch einen Uniform call zu ersetzen. Und zwar konkret durch glUniformMatrix4fv. Das Extension konnte ich setzen
und erhalte auch unter OpenGL 2.x einen gültigen Funktionszeiger.
Code: Alles auswählen
PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv = 0;
glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)brGetProcAddress("glUniform4fv");
if(!glUniformMatrix4fv){
throw brCore::brIllegalStateException(
"[brGLSLShader]::checkGLSLFunctionPointers: Extension function glUniformMatrix4fv is invalid!");
}
Doch crasht mir dann die Applikation beim Aufruf dieser Funktion mit einem Segfault:[Fri Jun 28 14:37:23 2013]: Driver vendor: NVIDIA Corporation
[Fri Jun 28 14:37:23 2013]: OpenGL version: 3.3.0
[Fri Jun 28 14:37:23 2013]: Graphics card : GeForce GTX 260/PCIe/SSE2
[Fri Jun 28 14:37:23 2013]: Supported OpenGL extensions :
[Fri Jun 28 14:37:23 2013]: OpenGL shading language version: 3.30 NVIDIA via Cg compiler
Code: Alles auswählen
Program received signal SIGSEGV, Segmentation fault.
0x0000000002ff0d64 in nvoglv64!DrvGetProcAddress ()
from C:\Windows\system32\nvoglv64.dll
(gdb) backtrace
#0 0x0000000002ff0d64 in nvoglv64!DrvGetProcAddress ()
from C:\Windows\system32\nvoglv64.dll
#1 0x0000000002853b81 in ?? () from C:\Windows\system32\nvoglv64.dll
#2 0x0000000007aa0290 in ?? ()
warning: (Internal error: pc 0xe in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0xe in read in psymtab, but not in symtab.)
#3 0x000000000000000f in ?? ()
warning: (Internal error: pc 0xe in read in psymtab, but not in symtab.)
#4 0x00000000005ac780 in ?? ()
#5 0x0000000002a94c70 in ?? () from C:\Windows\system32\nvoglv64.dll
#6 0x0000000000000000 in ?? ()
gebracht. Brachte aber keinen Erfolg. Der gleiche Funktionsaufruf stirbt auch auf einem integrierten Intel Grafik Chipsatz ...
Wenn ich OpenGL 3.x oder OpenGLES2 verwende gibt es keine Probleme mit dem Funktionsaufruf.
Hat jemand eine Idee was hier schief laufen könnte?