我在使用Android ICS的HTC One x上看到了一个问题,但到目前为止我测试过的任何其他设备上都没有这个问题:
所有没有Alpha通道(24位png)并且我不启用Alpha混合的纹理在该设备上只是白色。请参阅下面用于绘制纹理的代码,对于没有Alpha通道的纹理,m_alpha_blend为false:
if (m_alpha_blend) {
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
}
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glBindTexture(GL10.GL_TEXTURE_2D, m_texture_id);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, m_texture_buffer);
... (drawing)
gl.glDisable(GL10.GL_TEXTURE_2D);
if (m_alpha_blend) {
gl.glDisable(GL10.GL_BLEND);
}
答案 0 :(得分:1)
我找到了解决方案。这不是alpha /透明度的问题,而是纹理大小的问题。边长大于1024像素的所有纹理在该设备上显示为白色。
答案 1 :(得分:0)
你可能想要运行类似的东西:
int max;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max);
在每个设备上,如果设备不支持最大分辨率纹理,则将纹理降级为较小的尺寸。