2016-07-29 15 views
-3

ich versuchte, zu kompilieren dieses Programm durch eine OpenGL API für diese application-Klasse:OpenGL Ausnahme, wenn glCreateVertexArrays

#include "sb7.h" 

using namespace sb7; 
class my_application : public application 
{ 
public: 

    void startup() 
    { 
     render_program = compile_shaders(); 
     glCreateVertexArrays(1, &vertex_array_object); // <-- 
     glBindVertexArray(vertex_array_object); 
    } 
    void shutdown() 
    { 
     glDeleteProgram(render_program); 
     glDeleteVertexArrays(1, &vertex_array_object); 
     glDeleteProgram(render_program); 
    } 

    void render(double currentTime) 
    { 
     const GLfloat color[] = { 0.0f, 2.0f, 0.0f, 1.0f }; 
     glClearBufferfv(GL_COLOR, 0, color); 

     glUseProgram(render_program); 

     glDrawArrays(GL_TRIANGLES, 0, 3); 
    } 
private: 
    GLuint render_program; 
    GLuint vertex_array_object; 
}; 

DECLARE_MAIN(my_application); 

Allerdings habe ich die folgenden Ausnahmen: enter image description here

Es sagt, dass es eine Problem mit dieser Codezeile in der startup() Funktion:

Ich habe versucht mit glGenVertexArrays, aber es wird immer noch nicht erfolgreich kompiliert.

Antwort

0

glCreateVertexArrays ist eine Funktion von OpenGL 4.5. Wenn es NULL ist, bedeutet dies wahrscheinlich, dass es nicht von dem aktuellen OpenGL-Kontext in Ihrem Programm unterstützt wird.

Sind Sie sicher, dass:

  • Sie eine OpenGL 4.5 fähige Grafikkarte
  • Haben Sie eine Treiber für Ihre Grafikkarte, die
  • 4.5 OpenGL haben
  • das Framework Sie initialisiert verwenden unterstützt eine OpenGL 4.5 Kontext?
+0

Danke! Eigentlich haben glGenVertexArrays funktioniert. Auch die GLSL-Programme sollten mit der Version 400 kompiliert werden. –