Android GLUtils.texImage2D在使用OpenGLES 2.0着色器时会产生一些黑色纹理

时间:2011-07-03 21:10:53

标签: android opengl-es textures shader opengl-es-2.0

我正在将应用程序从OpenGLES 1.0转换为OpenGLES 2.0,我已经成功完成了大部分工作。令人讨厌的是,虽然有一些纹理(每次都有许多和相同的纹理)呈现黑色而不是任何有用的纹理。它们是小图像(大约32x32)和PNG格式的alpha通道,虽然它本身并不是唯一的,因为类似的图像加载正常。

我已将其缩小为GLUtils.texImage2D,在这些图片上返回1280错误,但我不明白为什么会导致问题。

有人能说出为什么会出现这种情况和/或可能的补救措施吗?是否可以手动使用GLES20.glTexImage2D(无论它做什么)?

1 个答案:

答案 0 :(得分:4)

我有类似的问题并通过使用以下方式加载我的图像来解决它:

BitmapFactory.decodeResource(context.getResources(), R.drawable.resourceName)

而不是样本中的代码(我的猜测是你现在拥有的):

InputStream is = mContext.getResources()
        .openRawResource(R.raw.robot);
    Bitmap bitmap;
    try {
        bitmap = BitmapFactory.decodeStream(is);
    } finally {
        try {
            is.close();
        } catch(IOException e) {
            // Ignore.
        }
    }