【问题标题】:What is the scope of glTexParameter's in OpenGL?OpenGL 中 glTexParameter 的范围是什么?
【发布时间】:2010-09-04 20:41:01
【问题描述】:

glTexParamter 是全局作用于所有纹理还是仅作用于当前绑定的纹理。

例如,如果我在纹理加载时调用它:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

这是另一个纹理加载:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

当我绑定第一个纹理时,它将只使用我设置的最后一个值 (GL_CLAMP) 还是使用绑定纹理时最初设置的值?

【问题讨论】:

    标签: opengl graphics opengl-es 3d


    【解决方案1】:

    来自OpenGL FAQ:


    21.070 纹理对象如何工作?

    纹理对象存储纹理贴图及其相关的纹理参数状态。它们允许通过一次调用 glBindTexture() 在纹理之间切换。

    (...)

    以下函数影响和存储纹理对象中的状态:glTexImage*()、glTexSubImage*()、glCopyTexImage*()、glCopyTexSubImage*()、glTexParameter*()和glPrioritizeTextures() .由于用于构建 mipmap 金字塔的 GLU 例程最终调用 glTexImage*(),它们也会影响纹理对象状态。此列表中明显缺少的是 glTexEnv*() 和 glTexGen*();它们不在纹理对象中存储状态。


    所以,glTexParameter* 只影响绑定的纹理。

    【讨论】:

    • 非常酷,这正是我所希望的,否则我每次绑定纹理时都必须进行大量状态更改。
    • @JustinMeiners 在现代 GL 中,我认为 glGenSamplers 可以为您提供确切的信息。
    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2011-11-11
    • 2020-10-18
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多