1

我正在使用glDrawArrayswith绘制一个点GL_POINTS。在我的Intel 82945G Express Chipset Family一切工作正常。但是在ATI Radeon Mobility 5730调整窗口大小时会随机出现垂直线。

这是渲染图片的代码:

glMatrixMode(GL_MODELVIEW);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(color_p_v,GL_FLOAT,offset,color_array);
glDrawArrays(GL_POINTS,0,N);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);

我在这里省略了数组初始化。

我已经检查过,在函数执行gDEBugger后,这些行被渲染到后台缓冲区中。glDrawArrays

我在这里看到了类似的问题,但是人们在渲染纹理时遇到了类似的问题。我的情况比较简单。

还有一些建议不要使用GL_POINTS,但这对我来说听起来很奇怪。

我想了解引擎盖下发生了什么。

恕我直言,在特定的驱动程序中有频段实现,但到底发生了什么?

4

1 回答 1

0

看来我找到了问题所在。例如,在 ATI 上,当像 (5,6) 这样的浮点数指定坐标时,我得到垂直线。当指定 (5+0.5f,6+0.5f) 时,所有系统上的一切都很好。这与驱动程序如何解释坐标和像素位置有关。整数坐标值位于不在它们中心的像素之间。

我想阅读有关该问题的更多信息,但找不到任何关于该问题的好文章。

于 2014-03-09T12:06:38.797 回答