Language agnostic opengl如何将3d点投影到屏幕空间?

Language agnostic opengl如何将3d点投影到屏幕空间?,language-agnostic,opengl,graphics,3d,Language Agnostic,Opengl,Graphics,3d,我试图用我自己的软件光栅化器模拟opengl的一个子集 我胡乱猜测这个过程是这样的: 将3d点乘以modelview矩阵->将该结果乘以投影矩阵 这是正确的吗 另外,投影矩阵的大小以及它是如何工作的?将点乘以modelview矩阵,然后再乘以投影矩阵。将结果规格化,然后与视口矩阵相乘,以获得屏幕坐标。所有矩阵均为4X4矩阵。您可以查看此链接以了解更多详细信息 (不好意思,我写了一篇关于这个主题的教程: 不过,有一点我没有解释。在本教程结束时,您处于标准化设备坐标中,即-1到+1。一个简单的线性

我试图用我自己的软件光栅化器模拟opengl的一个子集

我胡乱猜测这个过程是这样的:

将3d点乘以modelview矩阵->将该结果乘以投影矩阵

这是正确的吗


另外,投影矩阵的大小以及它是如何工作的?

将点乘以modelview矩阵,然后再乘以投影矩阵。将结果规格化,然后与视口矩阵相乘,以获得屏幕坐标。所有矩阵均为4X4矩阵。您可以查看此链接以了解更多详细信息

(不好意思,我写了一篇关于这个主题的教程:


不过,有一点我没有解释。在本教程结束时,您处于标准化设备坐标中,即-1到+1。一个简单的线性映射将其转换为[0-screensize]。

您也可以从中受益。这将获取对象坐标中的xyz点以及指向模型视图、投影和视口矩阵的指针,并告诉您xy、(z)坐标在屏幕空间中的位置(z是一个介于0和1之间的值,可以在深度缓冲区中使用)。代码中显示了所有三个矩阵乘法,以及透视所需的分割。

我相信OpenGL在内部使用4x4矩阵。