【问题标题】:Invalid call of undeclared identifier texture2DLodOffset未声明标识符 texture2DLodOffset 的无效调用
【发布时间】:2015-04-02 18:51:50
【问题描述】:

我正在尝试让这个FXAA shader 在我的机器上运行。

它似乎无法识别 GLSL 中名为 texture2DLodOffset 的函数。它也无法识别texture2DLodtexture2DLod 函数显然在texture2D 中有一个替代项作为第三个参数bias。但是,我找不到以前缺少的函数texture2DLodOffset 的替代方法。有人可以帮我解决这个问题吗?

如果有人能向我推荐更多anti-aliasing 技术,那就太好了。

规格(在虚拟机上工作):

OpenGL vendor string: Parallels and Intel Inc.
OpenGL renderer string: Parallels using Intel Iris OpenGL Engine
OpenGL version string: 2.1 INTEL-10.6.20
OpenGL shading language version string: 1.20

【问题讨论】:

    标签: opengl glsl antialiasing


    【解决方案1】:

    texture2DLodOffset() 来自 EXT_gpu_shader4,请确保您的 GL 实现支持并通过以下方式启用:

    #extension GL_EXT_gpu_shader4 : enable
    

    在您的 #version 指令之后。

    或者,the jMonkeyEngine sources 有一些替代方案:

    ...
    #if __VERSION_ >= 130
        #define OffsetVec(a, b) ivec2(a, b)
        #define FxaaTexOff(t, p, o, r) textureOffset(t, p, o)
    #elif defined(GL_EXT_gpu_shader4)
        #define OffsetVec(a, b) ivec2(a, b)
        #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
    #else
        #define OffsetVec(a, b) vec2(a, b)
        #define FxaaTexOff(t, p, o, r) texture2D(t, p + o * r)
    #endif
    ...
    

    您可能想要#version 120 的最后一组:

    #define OffsetVec(a, b) vec2(a, b)
    #define FxaaTexOff(t, p, o, r) texture2D(t, p + o * r)
    

    【讨论】:

      猜你喜欢
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多