【发布时间】:2013-02-09 11:53:09
【问题描述】:
在我的游戏引擎中,我在绘制到实际屏幕之前先绘制到帧缓冲区,然后使用后处理着色器绘制到实际帧缓冲区。但是,我在使用 AMD 驱动程序时遇到了一个问题,我的 Quad 渲染不正确。
代码在多个操作系统的 Nvidia 和 Intel GPU 上都能按预期工作。这是一个例子: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);
我尝试了其他选项,例如使用两个独立的三角形,但到目前为止没有任何效果。我完全不知道为什么这种行为会发生在 AMD 驱动程序中。
【问题讨论】:
标签: c opengl gpu amd-processor