2015-04-02 1 views
2

J'essaye d'obtenir ce FXAA shader exécuté sur ma machine.Appel non valide de l'identificateur non déclaré texture2DLodOffset

Il ne semble pas reconnaître une fonction nommée texture2DLodOffset dans GLSL. Il ne reconnaît pas non plus texture2DLod. La fonction texture2DLod a apparemment eu une alternative dans texture2D comme troisième argument bias. Cependant, je ne pouvais pas trouver une alternative à l'ancienne fonction manquante texture2DLodOffset. Quelqu'un peut-il me faire traverser ça?

Ce serait aussi génial si quelqu'un pouvait me suggérer plus de techniques anti-aliasing.

Spécifications (travaillant sur une machine virtuelle):

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 

Répondre

1

texture2DLodOffset() est-de EXT_gpu_shader4, assurez-vous que est pris en charge sur votre mise en œuvre de GL et validée par:

#extension GL_EXT_gpu_shader4 : enable 

après votre directive #version.

Ou, the jMonkeyEngine sources ont des alternatives:

... 
#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 
... 

Vous aurez probablement besoin de la dernière série pour #version 120:

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