gpt4 book ai didi

opengl-4 - glGenerateMipmap 如何工作?

转载 作者:行者123 更新时间:2023-12-02 00:14:42 28 4
gpt4 key购买 nike

我使用参数 level = 0 调用 glTexImage2D。然后我调用 glGenerateMipmap(GL_TEXTURE_2D)。 GL_TEXTURE_BASE_LEVEL 和 GL_TEXTURE_MAX_LEVEL 会发生什么?我假设它们是自动设置的:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, mipmapsCount - 1);

稍后我可以手动设置上述参数,例如降低最大级别。那正确吗 ?

最佳答案

正如您提到的,mipmap 堆栈的 GL_TEXTURE_BASE_LEVEL 和 GL_TEXTURE_MAX_LEVEL 值是派生的。这些值定义了所谓的纹理完整性所需的 mipmap 级别范围。当您要求 OpenGL 使用 glGenerateMipmap 自动生成 mipmap 时,整个堆栈被填充。如果您使用 glTextureStorage要指定级别数,GL_TEXTURE_MAX_LEVEL 设置为比调用中提供的最大级别少一。

您也可以在构建 mipmap 堆栈后修改基本和最大级别是正确的,但是如果您让 OpenGL 构建 mipmap 堆栈,我认为它不会给您带来太多好处。如果我没记错的话,你会在加载 mipmap 时修改基本和最大级别(通过重复调用 glTexImage* 并增加级别参数),这样你就不需要加载整个 mipmap 堆栈(你可能这样做是为了节省纹理内存,或者更好地控制更高[即堆栈中较小的mipmaps]级别的采样)。您还可以使用 GL_TEXTURE_MIN_LOD 和 GL_TEXTURE_MAX_LOD 来控制纹理中使用 mipmap 堆栈中的哪些 mipmap。这样做的原因是允许在纹理化时异步加载 mipmap 级别。

关于opengl-4 - glGenerateMipmap 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13807194/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com