关于OpenGL中纹理更新的问题,我有一些不太明白的地方。假设我像下面这样使用mipmaps创建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?如果答案是肯定的,那么我需要:
第二个问题: 如何检索每个mipmap维度和数据以传递到纹理中?
或者,我可以只做更新:
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,Width,Height,GL_BGRA,GL_UNSIGNED_BYTE,data);
立刻重新生成mipmaps吗?
glGenerateMipmap(GL_TEXTURE_2D);