所以我使用这个在onSurfaceCreate方法中为我的视图设置了透视图:
float size = .01f * (float) Math.tan(Math.toRadians(45.0) / 2);
float ratio = _width / _height;
// perspective:
gl.glFrustumf(-size, size, -size / ratio, size / ratio, 0.01f, 110.0f);
它或多或少与本教程完全相同:
http://www.droidnova.com/android-3d-game-tutorial-part-vi,436.html
但我希望能够在45.0和其他视角之间切换。当我试图改变的值 gl.glFrustumf 之后,屏幕变得空白!我可以在onSurfaceCreate方法中手动设置角度,但我无法弄清楚如何在不重新启动应用程序的情况下在两个透视图之间进行更改。有人可以帮忙吗?
感谢您的时间
答案 0 :(得分:3)
第二次调用glFrustum之前是否清除了投影矩阵? OpenGL有点不直观地将平截头体矩阵与堆栈上的前一个矩阵相乘。如果你连续多次调用glFrustum而不重置投影矩阵,你将得到一个荒谬的结果。