无论您使用固定着色器管道还是可编程着色器管道,一个常见的顶点管道都包含此矩阵乘法(自定义编码或在幕后):
Projection * Modelview * Position
许多教程指出对象的旋转等项目应该进入Modelview
矩阵。
我创建了一个基于度数的标准旋转矩阵函数,然后将 90 的适当倍数添加到度数参数中,以说明屏幕的自动旋转方向。作品。
对于不同的屏幕尺寸(屏幕的不同像素宽度和高度),我还可以在其中考虑一个Scale
乘数,以便Modelview
矩阵可以包含很多这些。
但是我决定的是一个更冗长的矩阵数学,因为我对这些东西不熟悉,我会很感激关于这是否聪明的反馈。
除了缩放和旋转等对象操作之外,我只需为屏幕尺寸缩放和屏幕方向添加独立矩阵。我最终得到了这个:
Projection * ScreenRotation * ScreenScale * Translate * Rotate * Scale * Position
我发现其中一些是可互换的顺序,例如Rotate
并且Scale
可以切换。
这为我提供了更精细的代码控制和隔离,例如,我可以只专注于对象的旋转,而无需同时考虑屏幕的方向。
这是适当组织矩阵数学的常见或可接受的策略吗?它似乎工作正常,但这种冗长是否有任何陷阱?