【发布时间】:2013-04-23 09:38:13
【问题描述】:
关于 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);
【问题讨论】: