-1

私は freeglut でウィンドウを作成しようとしています。次に glew を使用して 3.2 コンテキストを作成し、最新の OpenGL 関数 (c++ と Windows PC を使用) を使用します。私の問題は、コンテキストの作成 (freeglut init の前後に実行しようとした) が機能していないようで、glCreateShader のような関数を使用しようとするたびにアクセス違反が発生することです。

私が使用するコードは次のようになります (int main(int argc, char **argv) メソッドの開始位置にあります):

glutInit(&argc, argv);
glutInitWindowPosition(-1, -1);
glutInitWindowSize(640, 480);
glutInitDisplayMode(GLUT_RGBA || GLUT_DOUBLE || GLUT_DEPTH);

glutCreateWindow("some title");


glewExperimental = GL_TRUE;
GLenum err = glewInit();

 if (GLEW_OK != err)
 {
   fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
 }
 fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
 if (GLEW_VERSION_3_2)
 {
    fprintf(stdout, "OpenGL 3.2 ready", glewGetString(GLEW_VERSION));
 }
...
vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER); //<-- Access Violation

また、 glew init コードは Web サイトから 1:1 でコピーされます。私の間違いがあまり明白でなく、誰かが私を助ける時間を見つけてくれることを願っています.

4

1 に答える 1

2

そこに問題があります:

glutInitDisplayMode(GLUT_RGBA || GLUT_DOUBLE || GLUT_DEPTH);

ブール OR||は、ビット OR とは異なります|。ブール値やそれらではなく、ビットOR ビットマスクが必要です。|それとは別に、この方法では、コア コンテキストではなく、OpenGL-3 互換性プロファイル コンテキストを取得します。

于 2013-05-24T18:31:23.967 に答える