2013-07-26 6 views
0

Я работаю с 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); 
} 

Что я делаю неправильно?

+0

Это, как правило, боль, чтобы заставить GLEW играть в w/Qt. Qt предоставляет метод для получения функций GL после инициализации контекста. Если вы настроите 4.3, это будет: QOpenGLFunctions_4_3_Core * funcs = context-> versionFunctions(); - обратите внимание, что в Qt 5.1 произошли некоторые существенные изменения; все на лучшее, хотя. – dans3itz

ответ

0
  • Имеет ли ваша версия Qt поддержка OpenGL? Верьте или нет, некоторые нет. Это было для меня, и это сбило меня с ума. Загрузите версию Qt с поддержкой OpenGL и замените ту, которая у вас есть. Если все будет хорошо, у вас не должно быть проблем.
  • Если вы не хотите загружать предварительно загруженную версию, вы должны построить Qt с нуля. Для этого требуется Python, Perl, возможно, Ruby, и больше, чем немного терпения (потому что это никогда не так просто, как вы думаете об учебниках).
  • Код ошибки, который вы получаете, выглядит linking error, который, кажется, был найден here. Надеюсь, что это решает.
+0

Я сам скомпилировал эту версию Qt 4.8.4, и у нее есть поддержка OpenGL. Программа отлично работала с использованием OpenGL, но я использовал очень устаревшие вещи. Я собираюсь использовать новые вещи, и я хочу сделать этот грубый GLEW. Это подводит меня к этой проблеме. – Cheiron

+0

Действительно, Glew DLL не была на PATH. Спасибо =) – Cheiron

Смежные вопросы