glGenBuffers() Absturz mit "Segmentation fault". (C++/GLFW/GLEW)

So, in meinem Projekt verwende ich eine separate Klasse zu erstellen Buffern Buffer.cpp. Hier ist der Konstruktor

#define GLEW_STATIC
#define GLEW_NO_GLU
#define GLFW_NO_GLU

#include "GL/glew.h"
#include "GL/glfw.h"

Buffer::Buffer(GLenum _type, const void *data, GLsizei _size, GLenum usage) :  type(_type), size(_size)
{
  ...

  //Generate Buffer
  glGenBuffers(1, &buffer);

  ...
}

Und die Definitionen der Mitglieder:

GLuint buffer;
const GLsizei size; 
const GLenum type;
Buffer(GLenum, const void*, GLsizei, GLenum);

Das problem ist, dass wenn ich versuche zu generieren, einen Puffer mit zum Beispiel mit diesem Befehl:

Buffer vBuffer(GL_ARRAY_BUFFER, vertexPositions, sizeof(vertexPositions), GL_STATIC_DRAW);

das Programm stürzt bei glGenBuffers() mit termination-status "-1073741819". Ich habe versucht, Debuggen Sie das Programm, und das ist, was ich habe:

Program received signal SIGSEGV, Segmentation fault.

Meine Karte unterstützt OpenGL 1.5, so dass das nicht der Fall.

Es lohnt sich auch zu beachten, dass ich erstellte eine statische glew-Bibliothek selbst.

EDIT: ich endlich das problem behoben. Das problem war, dass ich den Aufruf glewInit() vor dem erstellen eines OpenGL-rendering-Kontext.

  • Haben Sie versucht, die glGetError()?
  • Sind Sie nicht importieren gl.h ? Nur da hatte ich seltsame Abstürze vor, wo ich nicht importieren-Header und GCC nicht meckern
  • Haben Sie eine aktuelle, glewInit()'d GL Kontext der Zeit lernen Sie, dass glGenBuffers() nennen?
  • Yep, habe ich bereits genannt glewInit(), glfwInit() und glfwOpenWindow() vor dem Aufruf von glGenBuffers().
  • Sind Sie aufgerufen, glewInit() nach glfwOpenWindow()? Hat Ihre Grafikkarte unterstützt OpenGL 1.5?
  • Oh, danke, das war das problem. Ich rief glewInit() vor glfwOpenWindow().

InformationsquelleAutor structinf | 2012-06-29
Schreibe einen Kommentar