0

単純な長方形の VBO を作成しようとしています。GL は、コア プロファイル (GL: 3.2、GLSL: 1.5、Cocoa の NSView 内) を使用するように設定されています。

OpenGL で単純な四角形を描画する方法を理解するのに何時間も費やしました。コア プロファイルに関する適切なチュートリアルを見つけるのは非常に難しいようです。私が見つけた最高のものはこのチュートリアルでした。

私はそれを自分のニーズに合わせて調整し、次のコードを思いつきました:

GLfloat vertices[] = { 1.0, -1.0, 1.0,
                       1.0,  1.0, 1.0,
                      -1.0,  1.0, -1.0,
                      -1.0, -1.0, -1.0 };
glGenBuffers(1, &vertexVBO);
glBindBuffer(GL_ARRAY_BUFFER, vertexVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*3*4, vertices, GL_STATIC_DRAW);
glVertexAttribPointer(VERTEX_POS, 3, GL_FLOAT, GL_FALSE, 0, 0); // VERTEX_POS = 0
glEnableVertexAttribArray(VERTEX_POS); // fails

ただし、これは : を呼び出すときにエラーをスローしていglEnableVertexAttribArrayますINVALID_OPERATIONドキュメントglBeginは、前述の呼び出しが aとの間で行われた場合に、このエラーが発生することを示唆していますglEnd。これはそうではありません。つまり、私の知る限り、コア プロファイルでもサポートされていませんglBeginglEnd

したがって、私は途方に暮れています。このばかげた四角形を描画するにはどうすればよいですか (または少なくとも初期化します)?

4

1 に答える 1

1

属性ポインターを設定する前に、VAO をバインドする必要があります。

GLuint vao_name;
glGenVertexArrays(1, &vao_name);
glBindVertexArray(vao_name);
// ...
glVertexAttribPointer(...);
glEnableVertexAttribArray(...);

また、リンクしているドキュメントは古くなっています —代わりにこれを使用してください。

于 2011-11-16T11:33:28.383 に答える