2

我有这段代码检查是否GL_ARB_sparse_texture支持:

GLint ExtensionCount = 0;
    glGetIntegerv(GL_NUM_EXTENSIONS, &ExtensionCount);
    for (GLint i = 0; i < ExtensionCount; ++i)
        if (std::string((char const*)glGetStringi(GL_EXTENSIONS, i)) == std::string("GL_ARB_sparse_texture")){
            std::cout << "supported" << std::endl;
        }

它打印出它是受支持的。问题是我的着色器说它不是:

#version 450 core
#extension GL_ARB_sparse_texture : require

输出: 在此处输入图像描述

我在 Windows 8.1 上有带有 350.12 驱动程序的 GTX 660Ti。

我究竟做错了什么?

4

1 回答 1

2

#extension正如 genpfault 在评论中所说,只有向 GLSL 语言添加功能的扩展才需要使用指令在着色器中手动启用。由于GL_ARB_sparse_texture不添加 GLSL 功能,因此您无需在着色器中显式启用它 - 检查支持glGetIntegerv就足够了。

如果扩展修改了 GLSL 规范(例如ARB_shader_subroutine),则会在扩展规范中提及。

于 2015-05-08T07:30:20.817 回答