Android opengl问题,左/右方向有偏斜的平截头体

时间:2011-09-13 06:30:22

标签: android opengl-es frustum

我正在编写一个简单的陀螺测试应用程序,我希望通过将手机倾斜到不同的方向来实现多边形的不同侧面。它类似于头部跟踪渲染技术,但我假设一个固定的眼睛位置,只有手机相对于眼睛(相机)移动。

为了做到这一点,我在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]);

有人遇到过这个吗?

1 个答案:

答案 0 :(得分:0)

您在投影中应用了一个查看矩阵。你不应该这样做。投影变换仅设置“虚拟镜头”的属性。放置相机发生在模型视图转换中。

在实施照明时,不要保持这两个不同的原因。