2 つの異なるシェーダーを使用してレンダリングする 2つの異なる頂点バッファーを作成しています。2 番目の頂点バッファーをバインドするとすぐに、最初の頂点バッファーに格納したデータが破損または失われたように見えます。
次のように、頂点バッファーを 1 つだけ生成して描画すると、次のようになります。
glGenBuffers( 1, &vb1 ) ;
glBindBuffer( GL_ARRAY_BUFFER, vb1 ) ;
// fill it..
glBufferData( .. )
次に、 draw() ループで、
glUseProgram( shader1 ) ;
glBindBuffer( vb1 ) ; // make sure it is bound
glDrawArrays( ... ) // draw it
その後、正常に動作し、問題もエラーもありません(私はgl* 呼び出しのたびに glGettingLastError() を使用しているため、このコードは完全に問題ないようです)
ここで、2 番目の頂点バッファーを生成してバインドすると、最初の頂点バッファーが生成されてバインドされた後はいつでも、
// ran in init() -- then previously working code in draw() is broken
glGenBuffers( 1, &vb2 ) ; // ok.. no problems with this line
glBindBuffer( GL_ARRAY_BUFFER, vb2 ) ; // spoils data in vb1?
glBindBuffer
この新しく生成されvb2
たバッファで呼び出すとすぐに、データvb1
が完全にダンプまたは失われたようです。描画しようとするとvb1
(そうではありませんvb2
!)、このクラッシュが発生します:
私も配列を埋めましたGL_STATIC_DRAW
。
わかりません。別の頂点バッファーが作成されて初期化されても、これらの頂点バッファーはデータを保持するはずだと思っていましたか? ..私は何を間違っていますか?