【问题标题】:Android OpenGL ES 2.0 texture appears completely blackAndroid OpenGL ES 2.0 纹理出现全黑
【发布时间】:2011-08-27 01:42:40
【问题描述】:

我在渲染从资产文件夹加载的纹理时遇到问题。如果我执行完全相同的程序从资源文件夹中加载相同的纹理,则一切正常。此外,当我从位图对象获取宽度和高度属性时,资产中的图像似乎正在正确加载,这些与磁盘上文件的尺寸相对应。但是尝试渲染纹理会导致纯黑色。

// [...]
int [] tmpId = new int[1];
GLES20.glGenTextures(1, tmpId, 0);
int id = tmpId[0];
InputStream in = null;
try {
   in = context.getAssets().open(resource);
}
catch (IOException e)
{
    e.printStackTrace();
}
Bitmap bitmap = BitmapFactory.decodeStream(in);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, id);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);

GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);

GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
bitmap.recycle();

我是否遗漏了什么,是否有适用于不同于资源的资产的规则?我似乎无法弄清楚为什么这不起作用。

图片为 512x512 png 格式,具有透明度。

【问题讨论】:

    标签: android opengl-es rendering textures


    【解决方案1】:

    我不能 100% 确定,因为您没有提供其余代码,但根据您所展示的内容,您似乎正在通过 glBindTexture 调用取消绑定您想要绘制的纹理最后一个参数等于0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-23
      • 2012-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多