Android OpenGL ES扭曲图像
我正在开发一个Android应用程序,它使用OpenGL
在草地上渲染3D球。用户可以与球交互(通过触摸旋转)。Android OpenGL ES扭曲图像
问题如下:一切正常,在我的三星Galaxy S2上,但当我在其他设备上尝试它(HTC令人难以置信的S,HTC的感觉,...)我得到一个扭曲的图像与多个裁剪视口上屏幕(见attached image)。
我已经尝试了所有我能想到的:禁用纹理,禁用灯等等......没有任何东西可以工作。
我知道没有实际的代码很难提供帮助,但我不知道代码的哪一部分导致了这种情况。所以我问,如果有人有任何想法可能会导致这个问题。
我的猜测是一些有关GLSurfaceView
或渲染子类或创建这些对象的顺序...
看看添附图像,让我知道,如果你知道是什么问题。
编辑: onSurfaceCreated代码:
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glClearDepthf(1.0f);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glDepthFunc(GL10.GL_LEQUAL);
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glEnable(GL10.GL_NORMALIZE);
}
我的朋友。过去我经历过同样的问题,这是由于GPU支持的深度数。例如在我的银河系中,它支持24位深度缓冲区,而在tegra2设备上只有16位,如果我记得不错的话。无论如何,这个问题是在egl config选择功能的时候,你必须相应地配置它。
试着发布egl配置的代码,这样我就可以为您打造了。
P.s.欢迎加入:)
行...你找到了它!我已经浪费了一周的时间。非常感谢你拯救了我的生命。 – 2012-01-11 08:20:19
很高兴有帮助。对不起,我写了我的手持设备的初步响应,而昨天晚上睡着了:) – 2012-01-11 09:14:59
要在莫里吉奥的答案添加,你可以设置你的GLSurfaceView东瀛配置:
mGLSurfaceView.setEGLConfigChooser(redSize, greenSize, blueSize, alphaSize, depthSize, stencilSize);
mGLSurfaceView.getHolder().setFormat(PixelFormat);
您可以阅读多一点here。请注意,这可能会对不同的图形芯片产生非常不利的影响,就像您所经历的那样。没有明显的原因,从扭曲的图像到非常糟糕的表现。
正是我做了什么,它现在工作正常。谢谢! – 2012-01-11 10:59:52
您使用的是哪个版本的Galaxy S2?根据*,有不同的模型使用不同的GPU。 – 2012-01-10 19:36:04
型号:GT-I9100 但我还测试了银河注意事项,工作正常以及 – 2012-01-11 07:27:29