0

为了在 Android 的 OpenGL 的 3D 世界和 2D 世界中使用相同的对象,我无法在两个 GLU 透视图中渲染相同的对象。

例如,当我执行以下命令时:

GLU.gluPerspective(gl, 45.0f,(float)GlobalConfiguration.getWidth()/(float)GlobalConfiguration.getHeight(),0.1f,1000.0f);

我必须确保我的对象是这样渲染的......

gl.glFrontFace(GL10.GL_CCW);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glCullFace(GL10.GL_BACK);

但是当我将视角更改为:

GLU.gluOrtho2D(gl,0,GlobalConfiguration.getWidth(),GlobalConfiguration.getHeight(),0);

除非我禁用剔除或重新定义索引缓冲区中顶点的顺序,否则该对象将不会呈现。

现在我需要坚持 3D 世界工作方式的原因是因为我的建模软件就是这样保存它的对象的。(搅拌机)

有谁知道为什么会这样?我仍然想使用剔除(启用它),但我希望一个对象可以在 3D 和 2D 中渲染。

4

1 回答 1

0

所以这个问题的答案相当有趣……你不能使用 glTranslatef 方法在 z 方向上将 gl 矩阵平移超过 1f!我的对象 z 位置在 -50f 左右,当调用 glTranslatef() 时,我将对象翻译不在 0f 和 1f 之间,并且该对象不可见!

真是浪费了一天...

于 2013-07-05T14:33:15.037 回答