glew Extension Check

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2374
Registriert: 04.08.2004, 20:06
Kontaktdaten:

glew Extension Check

Beitrag von Jonathan »

Also ich habe folgendes Problem:

Code: Alles auswählen

GLenum err=glewInit();
if(GLEW_OK!=err)
    //nicht erfüllt

if(!GLEW_ARB_vertex_buffer_object)
   ///nicht erfüllt

if(!glGenBuffers)
   //erfüllt!
Beim Aufrufen von glGenBuffer stürzt das Programm ab. Aber eigentlich sollte die Funktion doch zu ARB_vertex_buffer_object gehören oder nicht?
Wieso also ist das so?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: glew Extension Check

Beitrag von Ingrater »

Du wendest einen boolschen operator auf einen Funktionszeiger an, dass kann ja nicht gutgehen. glGenBuffers hat außerdem keinen Rückggabewert sollte etwas schieffgehen wird ein Error generiert

Code: Alles auswählen

GLuint Buffer;
glGenBuffers(1,&Buffer);
if(glGetError() != GL_NO_ERROR)
  //Fehler
Benutzeravatar
Jonathan
Establishment
Beiträge: 2374
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: glew Extension Check

Beitrag von Jonathan »

Ja die Sache ist ja, dass es direkt abstürzt, wenn man versucht glGenBuffers aufzurufen. Quasi ein ähnliches Verhalten, als sei glew gar nicht initialisiert.
Das Problem tritt übrigens nur auf einem Linux Rechner auf, unter Windows geht alles wunderbar. Normalerweise dürfte glGenBuffers ja auch überhaupt nicht abstürzen, es sei denn, der Funktionszeiger ist falsch.
Natürlich könnten theoretisch auch die Zeiger, die man der Funktion als Parameter übergibt ungültig sein, und die versucht dann darauf zuzugreifen, aber die Zeiger stimmen halt. Nur der Funktionsaufruf an sich macht Probleme.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Sternmull
Establishment
Beiträge: 264
Registriert: 27.04.2007, 00:30
Echter Name: Til
Wohnort: Dresden

Re: glew Extension Check

Beitrag von Sternmull »

Code: Alles auswählen

GLenum err=glewInit();
if(GLEW_OK!=err)
//nicht erfüllt ==> Initialisierung von glew ist also fehlgeschalgen

if(!GLEW_ARB_vertex_buffer_object)
///nicht erfüllt ==> Das ging also auch nicht

if(!glGenBuffers)
//erfüllt! ==> glGenBuffers (sofern ein Funktionszeiger) ist also NULL
Soweit ich das sehe versucht du einen NULL-Zeiger als Funktionsadresse aufzurufen. Guck dir halt mal im Debugger an was genau passiert. Evtl. geht schon was bei der Initialisierung von OpenGL schief? Und das von Ingrater empfohlene glGetError() kann ich dir auch nur ans Herz legen.
Antworten