Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
Opengl gluProject()窗口坐标整数值_Opengl - Fatal编程技术网

Opengl gluProject()窗口坐标整数值

Opengl gluProject()窗口坐标整数值,opengl,Opengl,我使用gluPoject()从(objX,objY,objY,objZ)世界坐标查找(gluProject()返回(winX,winY)的GLdouble值而像素坐标是int 我想知道在哪种情况下,我们应该选择floor(winX)或ceil(winX)作为最终像素坐标 OpenGL使用[0,width)x[0,height]的窗口坐标,其中(0,0)是左下像素的左下角。像素中心通常为0.5,因此floor就可以了。因为您可能不需要负范围(无论如何都在屏幕外),只使用整体部分也可以。OpenGL

我使用
gluPoject()
从(
objX
objY
objY
objZ
)世界坐标查找(
gluProject()
返回(
winX
winY
)的
GLdouble
值而像素坐标是
int


我想知道在哪种情况下,我们应该选择
floor(winX)
ceil(winX)
作为最终像素坐标

OpenGL使用[0,width)x[0,height]的窗口坐标,其中(0,0)是左下像素的左下角。像素中心通常为0.5,因此
floor
就可以了。因为您可能不需要负范围(无论如何都在屏幕外),只使用整体部分也可以。

OpenGL使用[0,宽度)x[0,高度)的窗口坐标,其中(0,0)是左下像素的左下角。像素中心通常为0.5,因此
地板
就可以了。因为您可能不需要负范围(反正是在屏幕外),只使用积分部分也可以。

感谢您的回复,但此解决方案的问题是OpenGL管道无法根据此函数对像素坐标进行舍入。因此,如果我使用此函数确定点的最终像素位置,则可能会导致我最终将点映射到附近的像素。例如举例来说,我的点是(1,2,3),它的(winX,winY)值是(2.3,3.6)。所以我将把它映射到(2,4)。但是当我使用glBegin(glu POINTS)API将这个点传递给OpenGL时,它可以映射到(2,3)或(2,4)或(3,3)或(3,4)中的任何一个根据OpenGL自己的舍入方法。我想知道OpenGL是如何做到这一点的。@kshitij:在将点绘制为
GL\u点时,您使用了哪些矩阵?
?您应该知道,使用典型的
glOrtho(0,w,0,h,…)
setup,您将再次以0.5的像素中心结束,因此在地板操作后,您必须将0.5添加到x和y。您还应该注意,使用多重采样会使事情变得更复杂。感谢您的回复,但此解决方案的问题是OpenGL管道无法根据此函数对像素坐标进行舍入。So如果我使用此函数来确定某个点的最终像素位置,则可能最终会将我的点映射到附近的像素。例如,我的点是(1,2,3),其(winX,winY)值是(2.3,3.6)。因此我会将其映射到(2,4)。但当我使用glBegin(GL_POINTS)API将该点传递到OpenGL时,它可以映射到(2,3)或(2,4)或(3,3)或(3,4)根据OpenGL自己的舍入方法。我想知道OpenGL是如何做到这一点的。@kshitij:在将点绘制为
GL\u点时,您使用了哪些矩阵
?您应该知道,使用典型的
glOrtho(0,w,0,h,…)
setup,您将再次以0.5的像素中心结束,因此在地板操作后,您必须将0.5添加到x和y。您还应注意,使用多重采样会使事情更加复杂。