Qt и GLEW: Программа вышла с кодом -1073741515

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

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

Заголовки:

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

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

1 ответ

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