Qt и GLEW: программа завершилась с кодом -1073741515

Я работаю с Qt и пытаюсь переключиться с OpenGL 1.0 на более новый OpenGL с помощью GLEW. У меня есть графический интерфейс, который использует подкласс QGLWidget для обработки материалов OpenGL. В начале initializeGL я делаю оператор GLenum err = glewInit();, и это приводит к следующему:

program.exe exited with code -1073741515

Еще немного деталей: библиотеки:

LIBS += -L"C:/Program Files/Microsoft SDKs/Kinect/v1.7/lib/amd64/" -lKinect10
LIBS += -lOpenGL32
LIBS += -lglew32
LIBS += -lglu32

Заголовки:

#include <windows.h>
#include <gl/glew.h>
#include <QByteArray>
#include <QGLWidget>
#include <memory>
#include <algorithm>

Полная функция инициализацииGL():

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);
}

Что я делаю не так?


person Cheiron    schedule 26.07.2013    source источник
comment
Как правило, сложно заставить GLEW играть с Qt. Qt предоставляет метод для получения функций GL после инициализации контекста. Если вы ориентируетесь на 4.3, это будет: QOpenGLFunctions_4_3_Core *funcs = context-›versionFunctions(); -- обратите внимание, что в Qt 5.1 произошли некоторые существенные изменения; хотя все к лучшему.   -  person dans3itz    schedule 26.07.2013


Ответы (1)


  • Ваша версия Qt поставляется с поддержкой OpenGL? Хотите верьте, хотите нет, но некоторые этого не делают. Это было со мной, и это сводило меня с ума. Загрузите версию Qt с поддержкой OpenGL и замените ту, которая у вас есть. Если все пойдет хорошо, проблем быть не должно.
  • Если вы не хотите загружать готовую версию, вы должны собрать Qt с нуля. Для этого потребуется Python, Perl, возможно, Ruby и немало терпения (потому что это никогда не бывает так просто, как вам кажется из руководств).
  • Код ошибки, который вы получаете, выглядит как ошибка связывания похоже, это было решено здесь. Надеюсь, это решит это.
person GraphicsMuncher    schedule 27.07.2013
comment
Я сам скомпилировал эту версию Qt 4.8.4, и она поддерживает OpenGL. Программа работала нормально с OpenGL, но я использовал очень устаревшие вещи. Я не пытаюсь использовать новые вещи, и я хочу сделать этот грубый GLEW. Что подводит меня к этой проблеме. - person Cheiron; 28.07.2013
comment
Это действительно была Glew DLL, не находящаяся в ПУТИ. Спасибо =) - person Cheiron; 30.07.2013