Я работаю с Qt, и я пытаюсь переключиться с OpenGL 1.0 на новый OpenGL с помощью GLEW. У меня есть GUI, который использует подкласс QGLWidget для обработки файлов OpenGL. В начале initializeGL
я делаю заявление GLenum err = glewInit();
и это приводит к следующим:Qt и GLEW: Программа вышла с кодом -1073741515
program.exe exited with code -1073741515
Некоторые подробности: LIBS:
LIBS += -L"C:/Program Files/Microsoft SDKs/Kinect/v1.7/lib/amd64/" -lKinect10
LIBS += -lOpenGL32
LIBS += -lglew32
LIBS += -lglu32
Headers:
#include <windows.h>
#include <gl/glew.h>
#include <QByteArray>
#include <QGLWidget>
#include <memory>
#include <algorithm>
Полный initializeGL() функция:
void OpenGLWidget::initializeGL(){
GLenum err = glewInit();
if (GLEW_OK != err)
{
/* Problem: glewInit failed, something is seriously wrong. */
}
glEnable(GL_TEXTURE_2D); //Enables the drawing of 2D textures
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width(), height(), 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, (GLvoid*) NULL);
glBindTexture(GL_TEXTURE_2D, textureId); //Binds the GL_TEXTURE_2D to the textureId
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width(), height(), 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, (GLvoid*) blackScreen); //Strart the program off with a black screen
glBindTexture(GL_TEXTURE_2D, textureId); //Binds the GL_TEXTURE_2D to the textureId
glClearColor(0,0,0,0);
glClearDepth(1.0f);
}
Что я делаю неправильно?
Это, как правило, боль, чтобы заставить GLEW играть в w/Qt. Qt предоставляет метод для получения функций GL после инициализации контекста. Если вы настроите 4.3, это будет: QOpenGLFunctions_4_3_Core * funcs = context-> versionFunctions(); - обратите внимание, что в Qt 5.1 произошли некоторые существенные изменения; все на лучшее, хотя. – dans3itz