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

问题描述:

我试图让FXAA shader在我的机器上运行。未声明的标识符texture2DLodOffset的无效调用

它似乎没有认识到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 

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)