繁体   English   中英

Android OpenGL ES 2.0纹理看起来完全是黑色的

[英]Android OpenGL ES 2.0 texture appears completely black

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

// [...]
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格式,具有透明度。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM