glGenBuffers аварийно завершает работу в Release Build

Я столкнулся со странной проблемой с функцией OpenGL glGenBuffers (). Я пишу довольно простое приложение, в котором я использую VBO, объявленный следующим образом:

#include <QGLFunctions>
#include <QGLWidget>

class MyClass : public QGLWidget, protected QGLFunctions {
    GLuint vertexBufferObject;

    //...
    GLuint makeBufferList(void);
}

GLuint MyClass::makeBufferList(void) {
    vertexBufferObject = 0;
    glGenBuffers(1, &vertexBufferObject);  // <-- Here it crashes

    //... load data and render

    return vertexBufferList;
}

MyClass::MyClass(QWidget* parent) 
    : QGLWidget(parent),
      vertexBufferObject(0)
{
    QGLContext* context = new QGLContext(this->format());
    initializeGLFunctions(context);
    glInit();
}

MyClass::~MyClass() {
    glDeleteBuffers(1, &vertexBufferObject);
}

Все это отлично работает в Debug Build. Данные отображаются хорошо и все, и программа в конце корректно завершает работу. Однако в Release Build glGenBuffers ()приводит к сбою программы. Он не просто возвращает 0 или ничего не делает, он падает прямо при вызове функции. Но поскольку проблема возникает только в режиме Release, я не могу использовать отладчик, чтобы выяснить, что происходит не так.

Я работаю над системой Windows 7 и разрабатываю Qt 4.8.1. Компилятором является компилятор MSVC 2010 (Qt SDK ).

Есть ли у кого-нибудь предложения, которые я мог бы попробовать?

// Редактировать:

Может быть полезно знать :Я пытался скомпилировать точно такой же код на Mac, используя компилятор GCC (Qt SDK ), и обе версии Debug и Release Build работают отлично. Но в Windows 7 проблема сохраняется.

5
задан Yellow 13 August 2012 в 10:54
поделиться