1

我在 Android 上使用原生代码中的 OpenGL ES 1.1。在某些地方,我使用 glClipPlanef() 来剪辑一些东西。剪辑的代码是:

GLfloat clip[4] = { 0, -1, 0, 0.2 };
glEnable(GL_CLIP_PLANE0);
glClipPlanef(GL_CLIP_PLANE0, clip);

<draw things>

glDisable(GL_CLIP_PLANE0);

这会在 y 轴上向上剪掉所有内容。

当我在 HTC Gratia (Android 2.2) 和 Galaxy Nexus (Android 4.3) 上测试时,这工作正常。

但是,当我在 Nexus 4 (Android 4.3) 上进行测试时,剪辑不起作用。为了让它在那里工作,我必须将方程参数更改为:

GLfloat clip[4] = { -1, 0, 0, -0.02 };

Nexus 4 上的剪裁似乎 X 轴和 Y 轴颠倒了。所有绘图仍然与其他设备相同,这只影响剪裁。

有谁知道为什么会这样?它是 Nexus 4 中的 Adreno 320 GPU 特有的吗?如果剪辑在不同设备上的工作方式不同,我如何正确支持所有设备?

不幸的是,我没有可能只更改为 OpenGL ES 2.0,在项目的这一点上工作太多了。这可能是 Android 中的 OpenGL ES 1.1 仿真中的东西吗?

编辑:刚刚确认新的 Nexus 7(2013 版)也有同样的错误剪辑问题。它还具有 Adreno 320 GPU。

4

0 回答 0