我有这款三星 Galaxy ACE GT-S5830 安卓手机。它有一个 Adreno-200 GPU。
我原以为它会支持 ETC(爱立信压缩格式),但看起来它无法加载它们。
虽然 gl.glGetString(GL10.GL_EXTENSIONS) 函数包含 GL_OES_compressed_ETC1_RGB8_texture 扩展。
但 android.opengl.ETC1Util.isETC1Supported() 返回 false ??? 这太奇怪了。
我已将文件转换为 .pkm 格式。这就是我加载纹理的方式,但我看到的只是指示纹理未加载的白屏。:
InputStream is= _context.getAssets().open("etc/hands_tex.pkm");
gl.glActiveTexture(GL10.GL_TEXTURE0); //texture unit to load texture to.
gl.glBindTexture(GL10.GL_TEXTURE_2D, glTextureId);
try {
ETC1Texture etc1tex = ETC1Util.createTexture(is);
ByteBuffer bb = etc1tex.getData();
gl.glCompressedTexImage2D(GL10.GL_TEXTURE_2D, level, ETC1.ETC1_RGB8_OES, etc1tex.getWidth(), etc1tex.getHeight(), 0, bb.capacity(), bb);
} catch (IOException e) {
e.printStackTrace();
}
即使上面对 ETC1Util.createTexture() 的调用有效并在内存中创建了纹理对象。