私は単純な三角形を描き、次のようにバッファを設定しようとしています。バッファとVAOsの設定glDrawElementsはエラーコードなしで例外をスローします
triangle t;
point3f vertices[] = { t.p1(), t.p2(), t.p3() };
GLushort indices[] = { 0, 1, 2 };
gl_vertex_array vao{ 3 };
vao.bind_vertex_array();
gl_vertex_buffer position_vbo{ buffer_type::array_buf };
position_vbo.bind_vertex_buffer();
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), &vertices[0],
GL_STATIC_DRAW);
position_vbo.unbind_vertex_buffer();
gl_vertex_buffer index_vbo{ buffer_type::element_array_buf };
index_vbo.bind_vertex_buffer();
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), &indices[0],
GL_STATIC_DRAW);
index_vbo.unbind_vertex_buffer();
vao.unbind_vertex_array();
は私が考えて大丈夫です、私は各段階でglGetError
で確認し、すべてが動作しているようです。私のレンダリング機能では、私は次のようにします。
glClearColor(0.4f, 0.3f, 0.6f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
o.vao.bind_vertex_array();
o.sp.use_program();
GLenum error = glGetError();
assert(error == GL_NO_ERROR);
//glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_SHORT, 0);
glDrawArrays(GL_TRIANGLES, 0, 3);
error = glGetError();
assert(error == GL_NO_ERROR);
o.sp.unuse_program();
o.vao.unbind_vertex_array();
glDrawArrays
とこのレンダリングコールはうまく動作しますが、私はglDrawElements
でレンダリングしようとしたとき、私は例外がスローされます。さらに、これは難しい例外です。私はエラーコードを見るために次の行に行くことができません。私はOpenGlコールがスローされるかもしれないことを知らなかった。私はここで立ち往生している。何が問題なのでしょうか?ここで
は、問題がVAOセットアップコードにある同様の議論
nvoglv32.dll throws the exception
おそらくアクセス違反です。 –
'GL_ELEMENT_ARRAY_BUFFER'を間違って設定しているような感じです。 –
以前は、バッファ作成サイトを 'glGetError'呼び出しで囲っていましたが、うまくいきました。 – meguli