【问题标题】:Texture access in vertex shader (GLSL 1.2) allowed?顶点着色器(GLSL 1.2)中的纹理访问是否允许?
【发布时间】:2012-11-29 04:12:59
【问题描述】:

我正在尝试将几何着色器移植回 OpenGL 2.1 (GLSL 1.2) 顶点着色器。 在替换了编译器抱怨的所有代码后,它给了我另一个错误:

顶点着色器纹理采样器过多

所以我向 GL 查询了允许的最大值,这就是我得到的:

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:0 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:0

这可能意味着顶点着色器中不允许使用纹理。

这只是我的硬件/驱动程序的限制还是 OpenGL2.1/GLSL1.2 要求的?

【问题讨论】:

    标签: glsl textures


    【解决方案1】:

    在 OpenGL 2.1 硬件上成功使用顶点纹理后,我可以确认这仅仅是硬件/驱动程序的限制。如果 OpenGL 2.1/GLSL 1.20 一开始就完全不允许顶点纹理的可能性,那么这些常量就没有多大意义了。

    编辑:作为上述更客观的证明,OpenGL Shading Language 1.10 Specification(对应于 OpenGL 2.0)在第 8.7 节纹理查找函数中说:

    纹理查找功能可用于顶点和片段 着色器。

    OpenGL 2.0 Specification 本身在 2.15.4 顶点着色器 - 着色器执行部分中说

    顶点着色器能够查找纹理贴图,如果 由 GL 实现支持。最大纹理数 顶点着色器可用的图像单元是 MAX_VERTEX_TEXTURE_IMAGE_UNITS;最大数量为零表示 GL 实现不支持顶点中的纹理访问 着色器。

    【讨论】:

    • Those constants wouldn't make much sense ... 我使用 GLEW,因此无法判断它们是否来自更高版本的 OpenGL,这样它们才有意义。但是如果你能确认在 GLSL1.2 顶点着色器中使用过纹理,那显然是驱动问题。
    • +1 感谢您的努力。我必须承认我懒得看规格(或者我没有足够的时间去做)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多