내 게임 엔진에서 실제 화면으로 그리기 전에 프레임 버퍼에 그립니다. 그런 다음 사후 처리 쉐이더를 사용하여 실제 프레임 버퍼로 그립니다. 그러나 내 쿼드가 잘못 렌더링되는 AMD 드라이버에서 발생하는 문제가 있습니다.AMD 드라이버가 전체 화면 쿼드를 잘못 렌더링하는 이유는 무엇입니까?
코드는 여러 운영 체제에서 Nvidia 및 Intel GPU 모두에서 예상대로 작동합니다. 여기 예가 있습니다 : http://i.stack.imgur.com/5fiJk.png 다른 AMD gpus를 사용하는 3 개의 시스템에서 재현되었으며 비 AMD 시스템에서는 보이지 않았습니다.
쿼드을 생성 된 코드
은 여기에 있습니다 : I는 두 개의 독립적 인 삼각형을 사용하는 등 다른 옵션을 시도했지만 아무것도 지금까지 근무하지 않았다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);
. 나는이 동작이 AMD 드라이버에서 발생하는 이유에 대해 완전히 분실했다.
수레를 사용하여 문제가 해결되었습니다. 나는 당신이 내가 운전수 버그로 인해 플로트를 사용해야한다는 것을 의미한다는 것을 즉시 깨닫지 못했습니다. –
// 왜 사람들이 GL_INT로 처음에 그들을 보낼까요? –