私は、OpenGL 2.0のレンダリングコンテキストを使用して、VBOで作業する方法を理解しようとしています。私は、2D(オルト)のレンダリングコンテキストを設定持っている、と私はこのような単純な四角形を描画することができますVBOでglDrawArraysを作成すると、何も描画されません。
glBegin(GL_QUADS);
glColor4f(1, 1, 1, 1);
glVertex2f(0, 0);
glVertex2f(0, 10);
glVertex2f(100, 10);
glVertex2f(100, 0);
glEnd;
しかし、私はVBOでそれを実行しようとするとき、それは失敗します。私は前と同じデータで、このようVBOを設定します。
procedure initialize;
const
VERTICES: array[1..8] of single =
(
0, 0,
0, 10,
100, 10,
100, 0
);
begin
glEnable(GL_VERTEX_ARRAY);
glGenBuffers(1, @VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(VERTICES), @VERTICES[1], GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
end;
と私はこのような描画しよう:私が読んだすべてのものから
begin
glColor4f(1, 1, 1, 1);
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glVertexPointer(2, GL_FLOAT, 0, 0);
glDrawArrays(GL_QUADS, 0, 1);
glBindBuffer(GL_ARRAY_BUFFER, 0);
end;
、それが動作するはずです。私はgDEBuggerを実行し、GLエラーはなく、VBOのデータは正しくロードされていますが、バッファを交換すると実際には何も表示されません。ノーマライズされた座標(0..1.0から)を使用するように頂点配列のデータを変更すると、何も表示されなくなります。私が間違っていることは何か考えていますか? (想定レンダリングコンテキスト自体が正しく設定されており、GLの関数ポインタは全て正しくロードされています。)
ああ、それは頂点の数を必要ですか?私の間違い。私はそれが**要素**の数を必要と思ったので、私は1クワッドを描こうとしていた。それは今働きます! –