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

标签 opengl glsl antialiasing

我正在尝试获取此FXAA shader在我的机器上运行。

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

如果有人可以建议我更多的抗锯齿技术,那就太好了。

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

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)

关于opengl - 未声明的标识符texture2DLodOffset的调用无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29420332/

相关文章:

iphone - 调整 UIWebView 大小时抗锯齿不起作用

c++ - 如何在多采样纹理中渲染颜色和深度?

c# - 了解 OpenGL 引擎的 GLTF2.0 文件的蒙皮部分

Opengl 像素完美 2D 绘图

GLSL 中断命令

c++ - 没有 glVertexPointer,通用顶点属性缓冲区似乎不起作用

java - 如何在 Java 中编写抗锯齿程序

opengl - 寻找具有数据偏移支持的 glTexSubImage2d 的替代方案

c++ - 更改子窗口大小 opengl

c++ - glGetUniformLocation 在 nvidia 卡上返回 -1