【问题标题】:texture(...) via textureoffset(...) performance in glsl纹理(...)通过纹理偏移(...)在 glsl 中的表现
【发布时间】:2016-08-04 08:16:54
【问题描述】:

与手动计算偏移量和使用常规 texture(...) 函数相比,使用 textureOffset(...) 是否会提高性能?

由于有一个 GL_MAX_PROGRAM_TEXEL_OFFSET 属性,我猜它可以在单个或至少尽可能少的情况下获取偏移的纹理像素,获取使其极好的例如模糊效果,但我似乎无法找出它是如何工作的内部任何地方?

更新: 重新制定问题:在使用 textureOffset(...) 函数时,在 gl-drivers 中是否普遍对纹理提取进行任何优化?

【问题讨论】:

    标签: opengl glsl texture-mapping glsles


    【解决方案1】:

    你问错问题了。问题不应该是更具体的功能是否总是具有更好的性能。问题是更具体的功能是否会更慢

    而且没有理由期望它会变慢。如果硬件没有专门的偏移纹理访问功能,那么编译器将手动偏移纹理坐标,就像你可以做的那样。如果有硬件可以帮助,那么它会使用它。

    因此,如果您需要 textureOffsets 并且可以在其限制范围内生活,那么没有理由使用它。

    我猜它可以在单个或至少尽可能少的情况下获取偏移的纹素,从而使其非常棒,例如模糊效果

    不,那是textureGathertextureOffset 就像它的名字所说的那样:根据纹理坐标访问纹理,并从该坐标的位置偏移一个纹素。

    textueGather 一次从多个相邻纹理像素中采样。如果您需要读取纹理的一部分进行模糊处理,textureGather(和textureGatherOffset)将比textureOffset 更有用。

    【讨论】:

    • 谢谢,我更新了问题,我知道textureGather,我想知道是否有任何驱动程序,甚至是常见的,可以利用textureOffset 来获取后面的多个纹素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    相关资源
    最近更新 更多