【问题标题】:3D to 2D Objects in Android's Open GL not rendering because of culling由于剔除,Android 的 Open GL 中的 3D 到 2D 对象无法渲染
【发布时间】:2013-07-03 01:15:11
【问题描述】:

为了在 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 中渲染。

【问题讨论】:

    标签: android opengl-es render glu


    【解决方案1】:

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

    真是浪费了一天……

    【讨论】:

      猜你喜欢
      • 2014-01-27
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 1970-01-01
      相关资源
      最近更新 更多