我试图将相机每帧偏移1个像素。所以我想知道我怎么能这样做,所以我的相机在X轴和Y轴上仅转换1个像素长度而不是在世界空间中转换X个数量?
答案 0 :(得分:1)
一般情况下,您无法通过" 一个像素"来对相机进行偏移。在3D空间。
你的相机做出的任何动作 - 向上,向下,向右或向左 - 将使当前看到的相对于每个物体的距离移动一个因子,以及有多少像素组成当前视图窗口。
换句话说 - 作为度量单位的像素并不存在于3D空间中。
答案 1 :(得分:0)
执行此操作的一种方法是在顶点着色器中,在计算顶点的同质坐标(通过将顶点乘以矩阵得到的4d点)后,添加偏移量(以像素为单位)除以屏幕宽度和高度,乘以同质坐标的w。
换句话说:
Offset2d =(offsetX / screenWidth,offsetY / screenHeight,0,0)
Out = homogenous + offset2d * homogenous.w
其中offsetX和offsetY以像素为单位。
我确信有一种方法可以调整投影矩阵以获得相同的结果,因此您不必将它放在每个顶点着色器中,但还没有解决这个问题。