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);
}
これはすべて、デバッグビルドで完全に正常に機能します。データは適切にレンダリングされ、プログラムは最終的に正しく終了します。ただし、リリースビルドでは、glGenBuffers()がプログラムをクラッシュさせます。0を返すか何もしないだけでなく、関数呼び出しですぐにクラッシュします。ただし、問題はリリースモードでのみ発生するため、デバッガーを使用して何が問題になっているのかを見つけることができません。
私はWindows7システムで作業しており、Qt4.8.1で開発しています。コンパイラはMSVC2010(Qt SDK)コンパイラです。
誰かが私が試みるかもしれない提案がありますか?
// 編集:
知っておくと便利かもしれません。GCC(Qt SDK)コンパイラを使用して、Macでまったく同じコードをコンパイルしようとしましたが、デバッグビルドとリリースビルドの両方が完全に正常に機能します。しかし、Windows 7では、問題は解決しません。