不同硬件上的不同OpenGL ES clipplane方程?

时间:2013-09-27 07:21:22

标签: android opengl-es opengl-es-1.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。

0 个答案:

没有答案