Android中的压缩ETC纹理更新-GLCompressedExSubImage2D
我可以在Android中成功创建和加载ETC纹理, 使用电话:Android中的压缩ETC纹理更新-GLCompressedExSubImage2D,android,opengl-es,textures,texture-mapping,Android,Opengl Es,Textures,Texture Mapping,我可以在Android中成功创建和加载ETC纹理, 使用电话: ETC1Texture etc1tex = new ETC1Texture(...); gl11.glCompressedTexImage2D(GL10.GL_TEXTURE_2D, 0/*level*/, ETC1.ETC1_RGB8_OES/*internal format*/, etc1tex.getWidth(), etc1te
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());
但是现在我需要用新的图像数据更新这个纹理。
我正在使用对子映像的调用:
GL11.glCompressedTexSubImage2D( GL10.GL_TEXTURE_2D, 0/*level*/,
0, 0, etc1tex.getWidth(), etc1tex.getHeight(),
ETC1.ETC1_RGB8_OES,
etc1tex.getData().capacity(),
etc1tex.getData());
它采用与上一个调用大致相同的参数。
但是它不起作用,我的质感一点也没有改变
但是如果我简单地用第一个调用替换子图像调用,我可以看到纹理在更新时出现一些扭曲
有人知道我如何使用这个CompressedExSubimage调用吗?是的,我遇到了同样的问题 我使用
glCompressedTexImage2D(texinfo.glTarget+face,level,glInternalFormat,pixelWidth,pixelHeight,0,faceLodSize,data)代码>
它起作用了
但是当我使用
glCompressedTexImage2D(texinfo.glTarget + face, level,glInternalFormat, pixelWidth, pixelHeight, 0,faceLodSize, NULL);
然后
glCompressedTexSubImage2D(texinfo.glTarget + face, level, 0, 0, pixelWidth , pixelHeight , glInternalFormat,faceLodSize, data);
它不起作用
gl error is GL_INVALID_OPERATION
我需要使用glCompressedTexSubImage2D
,因为我加载的是一个纹理,而不是一个缓冲区。
可以加载到多个磁贴缓冲区中。
如果一个磁贴加载完成,则调用glCompressedTexSubImage2D
来处理它。根据API()
所需的调色板格式不允许子图像更新,但
扩展定义的其他格式可能会出现。”
我假设这意味着对于ETC1压缩,不允许使用子映像。etc是否不支持GLCompressedExSubImage2D?还是有什么事要做?谢谢?我知道已经两年了,但你的问题解决了吗?