2015-04-02 91 views
2

我試圖讓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 

回答

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)