2

私は OpenGL に詳しくありませんが、他の人のコードを改善する必要があります。問題は、ドローコールごとに頂点データをコピーし、CPU を集中的に使用する作業を引き起こすことです。今、VBOを使用するように書き直そうとしています。新しいコードが描画されていますが、奇妙なサイズの問題があります。ジグソー ピースは大きく、古いコードとまったく同じ場合もあります。

VBO は、GPU メモリ内で一度だけバッファを作成することを理解しています。しかし、私は明らかに何かが間違っています。私はこのコードでレンダリングされた作品を持っている見てください:

glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, background);
glEnableVertexAttribArray(0);
glDrawElements(GL_TRIANGLE_STRIP, sizeof(indicies)/sizeof(indicies[0]), GL_UNSIGNED_BYTE, indicies);

そして、次のコードでシャドーします:

glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
glDrawElements(GL_TRIANGLE_STRIP, sizeof(indicies)/sizeof(indicies[0]), GL_UNSIGNED_BYTE, indicies);
glDisableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);

結果は次のとおりです。
奇妙なレンダリングの問題

ご覧のとおり、2 つのピースが重ねられていますが、影が正しくレンダリングされていません。この奇妙な問題の原因は何ですか?

更新
バッファを作成するコードの一部:

glGenBuffers(1, &vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(background), background, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
4

0 に答える 0