我可以使用以下调用在 Android 中成功创建和加载 ETC 纹理:
ETC1Texture etc1tex = new ETC1Texture(...);
gl11.glCompressedTexImage2D(GL10.GL_TEXTURE_2D, 0/*level*/,
ETC1.ETC1_RGB8_OES/*internal format*/,
etc1tex.getWidth(), etc1tex.getHeight(),
0/*border*/,
etc1tex.getData().capacity()/*imagesize*/,
etc1tex.getData());
但现在我需要用新的图像数据更新这个纹理。我正在使用对 SubImage 的调用:
GL11.glCompressedTexSubImage2D( GL10.GL_TEXTURE_2D, 0/*level*/,
0, 0, etc1tex.getWidth(), etc1tex.getHeight(),
ETC1.ETC1_RGB8_OES,
etc1tex.getData().capacity(),
etc1tex.getData());
这需要或多或少相同的参数,作为先前的调用。但它不起作用,我的纹理甚至没有改变一点。
但是,如果我只是将 SubImage 调用替换为第一个调用,我会在纹理更新时看到一些失真......
有谁知道我如何使用这个 CompressedTexSubImage 调用