我正在编写一个简单的陀螺测试应用程序,我希望通过将手机倾斜到不同的方向来实现多边形的不同侧面。它类似于头部跟踪渲染技术,但我假设一个固定的眼睛位置,只有手机相对于眼睛(相机)移动。
为了做到这一点,我在opengl es中使用了扭曲的截头体技巧。我可以毫无问题地抵消顶部/底部/近/远方向的平截头体。如果我将偏移值除以2,那么当我只有左/右方向工作时,真正奇怪的部分就出现了。有效地缩小了'真实应该是它的截头体。
以下是左/右方向带有2分频错误的工作示例代码:
// xEyePhone is the transform of eye relative to the screen, note the /2.0f for the 3rd and 4th params.
Matrix.frustumM(_ProjMatrix, 0, -ratio-xEyePhone[12]/2.0f, ratio-xEyePhone[12]/2.0f, 1-xEyePhone[13], 1-xEyePhone[13], xEyePhone[14], xEyePhone[14]+10);
Matrix.setLookAtM(_VMatrix, 0, xEyePhone[12], xEyePhone[13], xEyePhone[14],
XEyeCenterWorld[12], xEyeCenterWorld[13], xEyeCenterWorld[14],
XUpVectorWorld[12], xUpVectorWorld[13], xUpVectorWorld[14]);
有人遇到过这个吗?
答案 0 :(得分:0)
您在投影中应用了一个查看矩阵。你不应该这样做。投影变换仅设置“虚拟镜头”的属性。放置相机发生在模型视图转换中。
在实施照明时,不要保持这两个不同的原因。