Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows glDrawArrays在使用GL_点时提供垂直线_Windows_Opengl_Gldrawarrays - Fatal编程技术网

Windows glDrawArrays在使用GL_点时提供垂直线

Windows glDrawArrays在使用GL_点时提供垂直线,windows,opengl,gldrawarrays,Windows,Opengl,Gldrawarrays,我正在使用gldrawArray和GL_点绘制一个点。 在我的Intel 82945G Express芯片组系列上,一切正常。 但在ATI Radeon Mobility上,调整窗口大小时,5730条垂直线随机出现 以下是渲染图片的代码: glMatrixMode(GL_MODELVIEW); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glColorPointer(color_p_v,GL

我正在使用gldrawArray和GL_点绘制一个点。 在我的Intel 82945G Express芯片组系列上,一切正常。 但在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_点,但这听起来很奇怪

我想知道引擎盖下发生了什么


我知道在特定的驱动程序中是否有频带实现,但到底是怎么回事?

我似乎发现了问题所在。 当指定坐标为浮点值(如ATI上的5,6)时,我会得到垂直线。 当指定5+0.5f、6+0.5f时,所有系统都可以正常工作。 这与驱动程序如何解释坐标和像素位置有关。 整数坐标值位于像素之间,不在其中心


我想读更多关于这个问题的文章,但没有找到任何关于这个问题的好文章。

在clearbuffer和rerender之后,行是否仍然存在?使用GL_点肯定没有错;使用点精灵,它们是执行各种有趣操作的有效方法。启用双缓冲。调整大小时可以停止渲染。调整大小时仍无法绘制窗口。发生此情况时,Windows停止运行正常消息泵。然而,一个技巧是在开始调整大小时以0毫秒的间隔运行计时器,并在完成时停止计时器。调整窗口大小时,Windows将继续发送计时器事件。线条显示在窗口的特定宽度处。当它们出现时,我正在用其他窗口覆盖窗口,导致WM_PAINT消息和窗口重新渲染。线路还在,这不是司机的事。除非您告诉OpenGL使用不同的约定,否则它是完全指定的。阅读