【问题标题】:WebGL texture wrappingWebGL 纹理包装
【发布时间】:2014-04-20 10:49:37
【问题描述】:

您可以在 webgl 纹理 ala 中禁用纹理包装

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);

如果纹理与渲染目标的大小相同,这样做有什么特别的优势吗?这样做是否有任何性能原因?

如果这很重要,我对仅在 2D 广告牌上渲染纹理特别感兴趣。

【问题讨论】:

  • 是的,这样做有一个巨大的优势,它与线性过滤 0.01.0 的纹理坐标时发生的情况有关乙>。我已经解释了很多次了,我只是将您推荐给另一个答案I wrote recently。顺便说一句,这不会禁用环绕,它只是设置当您尝试在单个图像的边缘处或之外对坐标进行采样时的行为。

标签: javascript opengl-es webgl


【解决方案1】:

在功能上,改变它的唯一原因是如果你使用线性过滤,渲染纹理的边缘可能会有细微的差别。例如,在纹理的右侧,如果将 wrap 设置为 REPEAT,则线性过滤将在边缘的最右侧和最左侧纹素的颜色之间进行插值。使用 CLAMP_TO_EDGE,它使用最右边纹素的颜色。

性能应该相同。包裹模式可能存在性能差异的唯一情况是 GPU 本身不支持其中一种模式,并且必须在着色器代码中对其进行模拟。但是任何不是完全古老的 GPU 都应该支持这两种模式。

除非您特别需要重复行为,否则我通常会将值设置为 CLAMP_TO_EDGE。

【讨论】:

    猜你喜欢
    • 2016-08-28
    • 2012-02-21
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多