ich wollte jetzt endlich mal von Displaylisten auf VBOs umsteigen. Leider stürtzt mein Programm schon ab, sobald ich irgendwo glGenBuffers oder glGenBuffersARB drin hab, ohne Fehlermeldung. Die OpenGL-Version habe ich gerade zu 3.2 ausgelsen (glGetString(GL_VERSION)) , glewInit wird auch aufgerufen. Shader benützen funktioniert mit glUseProgram (oder glUseProgramObjectARB) einwandfrei. Wieso stürtzt es dann bei glGenBuffers ab?
Übrigens, warum kann ich mit OpenGL 3.2 noch alle alten Befehle verwenden, die bei meiner Version schon deprecated sein müssten?
Kann man auch ältere Versionen einstellen? Wenn ja, wie?
_________________ "Pixel, ich bin dein Vater." -Darf Shader
Ist echt ein gutes Buch, bin schon über das ein oder andere Kapitel daraus gestolpert. Aber welches Kapitel? Ich mein, es ist halt schon ein recht umfangreiches Tutorial.
Also bezüglich glGenBuffers steht da z.B.:
..."glGenBuffers(1, &positionBufferObject);"
..."The first line creates the buffer object, storing the handle to the object in the global variable positionBufferObject. Though the object now exists, it does not own any memory yet. That is because we have not allocated any with this object."
Hilft mir aber nicht weiter, oder stürtzt das jetzt ab, weil das Object keinen Speicher zugewiesen bekommen hat?
Ich hab natürlich schon ausprobiert mit glBindBuffer und glBufferData... und das ganze auch zu zeichnen.
Aber da es abgestürtzt ist, wollte ich eben Schritt für Schritt schauen woran es liegt, und musste feststellen, dass es schon bei glGenBuffers abstürtzt.
_________________ "Pixel, ich bin dein Vater." -Darf Shader
Registriert: Mi Dez 03, 2008 12:01 Beiträge: 167 Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Exakt. glew bietet dir die Funktionen höherer GL-Versionen, indem es Funktionspointer nimmt und sie mit den entsprechenden Adressen füllt, die es von wgl bekommt. Sollte es da Probleme geben, würde der Funktionszeiger von glGenBuffers möglicherweise auf 0 zeigen. Damit würde dein Programm abstürzen, wenn du diese Funktion aufrufst. Tipp: Programm mit gDEBugger laufen lassen, da kriegst du möglichweise Hinweise, wo das Problem liegt.
/edit:
Vinz hat geschrieben:
Übrigens, warum kann ich mit OpenGL 3.2 noch alle alten Befehle verwenden, die bei meiner Version schon deprecated sein müssten?
Kann man auch ältere Versionen einstellen? Wenn ja, wie?
Vermutlich verwendest du keinen forward-compatible-Context. Eine ältere Version anzufordern ist nicht notwendig.
opengl.org hat geschrieben:
A context, of version 3.0 or greater, can be created with the "forward compatibility" bit set. This will cause, for the given profile, all functionality marked "deprecated" to be removed. You can combine the forward compatibility bit with core and compatibility contexts.
Und wie ist das jetzt mit den Versionen. Ich hab ja jetzt auslesen lassen, dass ich 3.2 hab, wieso kann trotzdem die alten Befehle verwenden? Bei http://www.opengl.org/wiki/History_of_O ... tion_Model steht, dass ab 3.1. z.B. Displaylisten entfernt wurden. Warum kann ich sie dann mit 3.2 verwenden?
_________________ "Pixel, ich bin dein Vater." -Darf Shader
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Weil du einen Kontext mit Rückwärtskompatibilität erstellt hast. Bei solchen Kontexten kann man auch noch die alte Funktionalität nutzen. Willst du nur die neuen Funktionen nutzen, dann brauchst du (siehe Posting von darkinsanity) einen Vorwärtskompatiblen Kontext.
So, jetzt klappt es endlich mit den VBOs. Ich hatte glewInit im main aufgerufen, dort werden auch meine Shader geladen. Da ich meine Shader in anderen Programmteilen(z.B. in der Draw-Datei) benutzen konnte, dachte ich, dass es reicht, glew im main zu initialisieren.
glewInit direkt vor glGenBuffers in dem anderen Programmteil aufzurufen, hat die Sache dann behoben.
_________________ "Pixel, ich bin dein Vater." -Darf Shader
Mitglieder in diesem Forum: Bing [Bot] und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.