未声明标识符texture2DLodOffset的调用无效

时间:2015-04-02 18:51:50

标签: opengl glsl antialiasing

我想在我的机器上运行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

1 个答案:

答案 0 :(得分:2)

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)