VBOについて混乱していました。
glGenBuffers(1, &positionBufferObject);
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
GL_ARRAY_BUFFERの他に、他のターゲットタイプがあります:GL_ATOMIC_COUNTER_BUFFER、GL_COPY_READ_BUFFER ...
ただし、Openglマニュアルでは、これらのターゲットの意味については触れられていません。 glew.hを確認しました。
#define GL_ARRAY_BUFFER 0x8892
これは、ターゲット(GL_ARRAY_BUFFERなど)がアドレスであることを意味しますか?
ターゲット-glBindBufferのGL_ARRAY_BUFFERはどういう意味ですか?
ほとんどの OpenGLオブジェクト を使用するには、「ターゲット」と呼ばれるOpenGLコンテキスト内の場所にバインドする必要があります。ターゲットは、オブジェクトがバインドされているコンテキスト内の場所にすぎません。
オブジェクトタイプ(バッファ、テクスチャなど)によってターゲットのセットが異なります。一般的に、各ターゲットには特定の意味があります。1つのオブジェクトを1つのターゲットにバインドするということは、ターゲットがバインドされたオブジェクトをターゲットが使用する方法でそのオブジェクトを使用することを意味します。
オブジェクトを1つのターゲットにバインドしても、そのオブジェクトが別のターゲットにバインドされているかどうかには影響しません(テクスチャオブジェクトでない限り、ターゲットの扱いが異なります)。
オブジェクトを変更したり、バインドされたオブジェクトからデータを照会したりする関数があります。それらは、変更/照会しているオブジェクトがバインドされているターゲットを受け取ります。
GL_ARRAY_BUFFER
バッファオブジェクト のターゲットは 頂点属性データにそのバッファオブジェクトを使用する の意図を表します。ただし、このターゲットにバインドするだけでは何も起こりません。 glVertexAttribPointer
(または同等の関数) への呼び出しのみが、その属性の属性データのターゲットにバインドされたバッファーを使用します。
ただし、Openglマニュアルでは、これらのターゲットの意味については触れられていません。
OpenGL 2.1仕様、38ページ、セクション2.9.1:「バッファーオブジェクトの頂点配列」
これは、ターゲット(GL_ARRAY_BUFFERなど)がアドレスであることを意味しますか?
いいえ、それらはunsigned int
sはenum
sのように使用されます。