我正在尝试在我的 android 应用程序中加载一些纹理。
它适用于所有设备,例如 samsung galaxy ace、s2
但任何使用 PowerVR SGX540 gpu 的设备,例如三星galaxy S-gti9000
会有一些奇怪的 Artifact ....
某些纹理已正确加载... 但其他纹理是完全黑色的....
我已经确保我所有的纹理都是二次幂, 但它们不是方形的,可以是矩形的,例如64*128.
我正在使用以下纹理参数设置....
gl.glActiveTexture(GL10.GL_TEXTURE0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, glTextureId);
gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MIN_FILTER, gl.GL_LINEAR);
gl.glTexParameterf(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
最佳答案
正如 Tim 所建议的,android 可以帮助调整图像大小以匹配不同设备的 dpi。
加载图像后检查图像的大小,以确保它们仍然是二次方。
将资源文件放在 res/drawable-nodpi
中应该让 android 知道您不想调整它们的大小。
关于android - PowerVR SGX540 Android 纹理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12047253/