我正在尝试在我的android应用程序中加载一些纹理。

它适用于所有设备,例如三星银河王牌s2
但任何使用PowerVR SGX540 gpu的设备,例如三星Galaxy S-gti9000
会有一些奇怪的文物...。

某些纹理已正确加载...
但其他纹理完全是黑色的。

我确保我所有的纹理都是2的幂,
但它们不是正方形,可以是矩形,例如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知道您不希望它们调整大小。

09-26 08:46