我试图用我自己的软件光栅化器模拟一个opengl的子集。
我猜测这个过程是这样的:
通过模型视图矩阵乘以3d点 - >将该结果乘以投影矩阵
这是对的吗?
投影矩阵的大小是多少,它是如何工作的?
答案 0 :(得分:5)
将该点乘以模型视图矩阵,然后乘以投影矩阵。对结果进行归一化,然后与视口矩阵相乘以获得屏幕坐标。所有矩阵都是4X4矩阵。您可以查看此链接以获取更多详细信息。
答案 1 :(得分:4)
(无耻的自我推销,对不起)我写了一个关于这个主题的教程:
http://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices/
但有一点需要注意,我不解释。在本教程结束时,您处于标准化设备坐标,即-1到+1。一个简单的线性映射将其转换为[0-screensize]。
答案 2 :(得分:2)
您也可以从the gluProject() code中受益。这需要对象坐标中的 x , y , z 点以及指向 modelView <的指针/ em>,投影和视口矩阵,告诉您 x , y 的内容,( z )坐标位于 screenspace 中(z是介于0和1之间的值,可在深度缓冲区中使用)。代码中显示了所有三个矩阵乘法,以及透视所需的除法。