GL Extionsions Problem
-
Vielleicht stelle ich mich auch einfach wieder zu dumm an, aber es geht nicht in meinen Kopf rein. Ich will einfaches Multitexturing nutzen und nach stunden hab ich nun schon rausbekommen, das es eigentlich ganz einfach ist:
1. neueste glext.h holen (hab ich , die ist aus dem aktuellen MESA entnommen)
Nach Context holen
glMultiTexCoord2f =(PFNGLMULTITEXCOORD2FPROC)wglGetProcAddress("glMultiTexCoord2f");
aufrufen
3. Funktion nutzen
4. Freuen
Also Punkt 3 und 4 entfällt bei mir. DEVC++ (oder besser gesagt MinGW) meldet mir bei Aufruf von Punkt 2:
52 ... assignment of function `void glMultiTexCoord2f(GLenum, GLfloat, GLfloat)'. Wie so oft eine Fehlermeldung, die ich nicht begreife. Soviele Fehlerquellen kann es doch da nicht geben.Ich denke mal die Lösung ist sehr simple, aber, oh Gott, ich seh`s net.
Danke schon mal.
-
1. Über FunctionPointer schlau machen.
2. Fehlermeldung korrekt posten.
3. Es heißt "Extensions"!
-
zu 3. Ja, sorry, war schon etwas spät für mich gestern
zu 1. Ich weiß schon was FPs sind, zumindest unter Delphi (bitte nicht kreuzigen, ich hab programmieren mit c gelernt, aber im LKInfo eben nur Delphi gehabt
)
zu. 2: hinfällig
Also in meiner kleinen Initfunktion sieht das jetzt völlig unspektakulär so aus:
PFNGLACTIVETEXTUREPROC glActiveTexture=NULL; PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f=NULL; glMultiTexCoord2f =(PFNGLMULTITEXCOORD2FPROC)wglGetProcAddress("glMultiTexCoord2f"); glActiveTexture = (PFNGLCLIENTACTIVETEXTUREARBPROC) wglGetProcAddress("glActiveTexture");
Soweit denke ich mal ist alles klar. Nur irgendwie hab ich dann das Prob, dass ich die Funktionen ja weit weg von meiner InitFn nicht nutzen kann, der Linker kennt die Addresse ja net. Jeder Versuch, die Pointer Global zu machen scheitert jedoch daran, dass ich natürlich ne
Cpp\include\gl\gl.h previous declaration of `void glActiveTexture(GLenum)'
bekomme. Ich hab den Spaß jetzt einfach in die Funktion gepackt, die den Teil der Scene rendert in dem ich die Extensions nutzen will, es wird nur einmal gerendert, weil es sowieso in ne DL kommt. Aber so richtig zufriedenstellend ist das natürlich nicht. Ist alles begründet in meinem Halbwissen über C, man möge mir verzeihen. Deswegen frag ich ganz dumm, weil die Antwort wohl trivial ist: Wie macht ihr das denn?