Nvidia / AMD不支持glsl中的uint64_t?

时间:2019-01-26 17:28:42

标签: c opengl graphics glsl

我正在笔记本电脑上使用GTX 1050,最新的NVidia驱动程序417,并且对规格感到满意使用OpenGL

Language/Generator: C/C++
Specification: gl
APIs: gl=4.5
Profile: core
Extensions:
    GL_ARB_bindless_texture,
    GL_ARB_gpu_shader_int64
Loader: True
Local files: False
Omit khrplatform: False
Reproducible: False

它可以编译,但是当glsl运行时会失败。我尝试了所有附加组件,以使其高兴,仍可编译但没有着色器。

与Nuklear GUI一起使用,在创建部分中是此着色器:

static const GLchar *fragment_shader =
        NK_SHADER_VERSION
        NK_SHADER_BINDLESS
        NK_SHADER_64BIT
        "precision mediump float;\n"
        "uniform uint64_t Texture;\n"
        "in vec2 Frag_UV;\n"
        "in vec4 Frag_Color;\n"
        "out vec4 Out_Color;\n"
        "void main(){\n"
        "   sampler2D smp = sampler2D(Texture);\n"
        "   Out_Color = Frag_Color * texture(smp, Frag_UV.st);\n"
        "}\n";

具有定义:

#define NK_SHADER_VERSION "#version 450 core\n"
#define NK_SHADER_BINDLESS "#extension GL_ARB_bindless_texture : require\n"
#define NK_SHADER_64BIT "#extension GL_ARB_gpu_shader_int64 : require\n"

错误输出为不支持'GL_ARB_gpu_shader_int64'

我不知道为什么?已经针对AMD同样的错误进行了测试。

0 个答案:

没有答案