私のゲームエンジンでは、実際の画面に描画する前にフレームバッファーに描画し、その後、後処理シェーダーを使用して実際のフレームバッファーに描画します。ただし、AMDドライバーで発生している問題があり、クワッドが正しくレンダリングされません。
このコードは、複数のオペレーティングシステムのNvidiaとIntelGPUの両方で期待どおりに機能します。次に例を示します。http://i.stack.imgur.com/5fiJk.png これは、AMD GPUが異なる3つのシステムで再現されており、AMD以外のシステムでは見られません。
クワッドを作成したコードは次のとおりです。
static int data[] = {
0, 0,
0, 1,
1, 1,
1, 0
};
GLuint vao, vbo;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(data), &data, GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_INT, GL_FALSE, 0, NULL);
glVertexAttribPointer(1, 2, GL_INT, GL_FALSE, 0, NULL);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
/* code which draws it */
glBindVertexArray(vao);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
2つの独立した三角形を使用するなど、他のオプションを試しましたが、これまでのところ何も機能していません。この動作がAMDドライバーで発生する理由について私は完全に迷っています。