Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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视口转换_Opengl - Fatal编程技术网

OpenGL视口转换

OpenGL视口转换,opengl,Opengl,我想知道OpenGL如何处理到窗口的视口转换 据我所知,视口变换是通过将视口变换应用于场景,将场景拉伸到OpenGL窗口上 如果我错了,请纠正我。: 窗口坐标(屏幕坐标) 通过将归一化设备坐标(NDC)应用于 视口变换。对NDC进行缩放和转换,以便 适合渲染屏幕。窗口坐标最终为 通过OpenGL管道的评级过程成为 碎片。glViewport()命令用于定义 最终图像映射的渲染区域。而且,gldeptrange()是 用于确定窗口坐标的z值。窗户 坐标是用上述2的给定参数计算的 功能 按照链接查看

我想知道OpenGL如何处理到窗口的视口转换

据我所知,视口变换是通过将视口变换应用于场景,将场景拉伸到OpenGL窗口上

如果我错了,请纠正我。

窗口坐标(屏幕坐标)

通过将归一化设备坐标(NDC)应用于 视口变换。对NDC进行缩放和转换,以便 适合渲染屏幕。窗口坐标最终为 通过OpenGL管道的评级过程成为 碎片。glViewport()命令用于定义 最终图像映射的渲染区域。而且,gldeptrange()是 用于确定窗口坐标的z值。窗户 坐标是用上述2的给定参数计算的 功能

按照链接查看数学详细信息。

窗口坐标(屏幕坐标)

通过将归一化设备坐标(NDC)应用于 视口变换。对NDC进行缩放和转换,以便 适合渲染屏幕。窗口坐标最终为 通过OpenGL管道的评级过程成为 碎片。glViewport()命令用于定义 最终图像映射的渲染区域。而且,gldeptrange()是 用于确定窗口坐标的z值。窗户 坐标是用上述2的给定参数计算的 功能

按照链接查看数学详细信息。

剪裁和透视分割后,所有剩余(可见)顶点坐标x、y、z都在-1和+1之间——这些被称为标准化设备坐标。它们通过适当的缩放和平移(即视口变换)映射到设备坐标

例如,如果视口的大小为1024x768,具有16位深度缓冲区,且原点为(0,0),则点将按(512384,2^14)缩放,并按(512384,2^14)移动,从而为设备生成适当的像素和深度值。

在剪裁和透视分割后,所有剩余(可见)顶点坐标x,y,z在-1和+1之间——这些被称为标准化设备坐标。它们通过适当的缩放和平移(即视口变换)映射到设备坐标

例如,如果视口的大小为1024x768,具有16位深度缓冲区,且原点为(0,0),则这些点将按(512384,2^14)缩放,并按(512384,2^14)移动,从而为设备生成适当的像素和深度值