Android:没有alpha的OpenGL纹理在HTC One x上只是白色

时间:2012-04-19 12:56:49

标签: android opengl-es textures

我在使用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);
}

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。这不是alpha /透明度的问题,而是纹理大小的问题。边长大于1024像素的所有纹理在该设备上显示为白色。

答案 1 :(得分:0)

你可能想要运行类似的东西:

int max;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max);

在每个设备上,如果设备不支持最大分辨率纹理,则将纹理降级为较小的尺寸。