Я столкнулся со странной проблемой с функцией 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 проблема сохраняется.