我无法完全理解 OpenGL 中的纹理更新。假设我使用这样的 mipmap 创建 OpenGL 纹理:
///.. tex gen and bind here .... ///
glTexStorage2D(GL_TEXTURE_2D,numMipMapLevels,GL_RGBA8,imageInfo.Width,imageInfo.Height);
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,Width,Height,GL_BGRA,GL_UNSIGNED_BYTE,data);
glGenerateMipmap(GL_TEXTURE_2D);
现在第一个问题: 这是否意味着,当我想更新包含所有 mipmap 级别的纹理时,我是否必须遍历每个级别并使用适当的 mipmap 尺寸和图像字节调用 glTexSubImage2D?如果答案是 YES,那么我有:
第二个问题:如何检索每个 mipmap 维度和数据以传递到纹理中?
或者,我可以只做更新:
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,Width,Height,GL_BGRA,GL_UNSIGNED_BYTE,data);
然后立即重新生成mipmap?
glGenerateMipmap(GL_TEXTURE_2D);