如果我创建两个纹理 1. srcID 2. destID
两种类型GL_TEXTURE_CUBE_MAP
glTexStorage2D(GL_TEXTURE_CUBE_MAP,6,GL_RGBA8,32,32);
现在" srcID"填充了所需的所有纹理数据。 那么使用什么参数来复制整个" srcID" to" destID"。 试过很多组合,但它总是给出错误。
答案 0 :(得分:1)
这是未经测试的,纯粹来自研究手册页和规范文档:
glCopyImageSubData(srcID, GL_TEXTURE_CUBE_MAP, 0, 0, 0, 0,
destID, GL_TEXTURE_CUBE_MAP, 0, 0, 0, 0,
32, 32, 6);
最不明显的部分是如何指定要复制所有立方体贴图面。规范说明了目标论点:
接受所有非代理纹理目标,但表8.19中描述的TEXTURE_BUFFER和立方体贴图面选择器除外。
这告诉我GL_TEXTURE_CUBE_MAP
必须用于那些参数,而不是特定的面孔。
然后关于如何指定要复制所有6个立方体贴图面,这部分是相关的(由我添加突出显示):
一维数组,二维数组,立方体贴图数组或三维纹理的切片,或立方体贴图纹理的面都是兼容的,前提是它们共享兼容的内部格式,通过指定带有srcZ和dstZ 的起始切片,并通过一次调用,可以在这些对象之间复制多个切片或面要使用srcDepth复制的切片。根据表8.19中指定的顺序, Cubemap纹理始终有六个面,这些面由基于零的面部索引选择。
因此,复制所有6个面应该适用于srcZ
和dstZ
使用0,srcDepth
使用6。