我需要在我的 OpenGL 应用程序中有一个 2D 层。我首先使用典型的正射投影来实现它,如下所示:
Mat4 ortho =Glm.ortho(0,viewWidth , 0 ,viewHeight);
2d 工作得很好,除了在不同的屏幕尺寸下运行时,2d 形状相对于一个新的方面进行缩放。这不是我想要的(与人们通常需要的相反)。我需要根据新的屏幕尺寸拉伸或挤压 2d 形状。
我试图不使用正交矩阵,而只是使用一个恒等式。这个行得通,但在这种情况下,我必须使用 0 -1 范围内的数字来操作可见平截头体区域中的对象。我需要使用常规数字(未标准化)范围。所以这有点迫使我回到正射投影,这是有问题的,因为已经说过了。所以问题是我如何在没有透视保持在世界坐标系中的情况下变换 2d 对象。
更新:
最好的例子是 Adobe AfterEffects 中的 2D 图层。如果一个人改变了构图维度,二维层不会根据新维度进行缩放。这就是我所追求的。