【问题标题】:What's needed to support non-square matrices in GLSL shader?在 GLSL 着色器中支持非方阵需要什么?
【发布时间】:2011-11-25 12:52:03
【问题描述】:

我试图在我的 GLSL 着色器中使用非方阵,但是当我编译时出现语法错误。

我的着色器代码使用:

uniform mat4 my_mat;

编译得很好。

但是如果我把它改成:

uniform mat4x3 my_mat;

我明白了

ERROR: 0:5: 'mat4x3' : syntax error syntax error

我遇到了类似的错误

uniform mat4x4 my_mat;

如果我打印我的 GL_VERSION 和 GL_SHADING_LANGUAGE_VERSION 我会得到: GL_VERSION:2.1 NVIDIA-1.6.36 GL_SHADING_LANGUAGE_VERSION:1.20

我正在 Mac OS X 10.6 MacBook Pro 上编译和运行我的 OpenGL。根据this NVidia document 和其他人的说法,GLSL 1.20 和 GL 2.1 应该包含对非方阵和这种语法的支持。还有其他问题吗?或者其他解决我为什么会出现语法错误的方法?

【问题讨论】:

    标签: macos opengl glsl shader gpu


    【解决方案1】:

    如果我放置

    #version 120
    

    在我的着色器代码的顶部,问题消失了。根据the same document listed in the question 着色器源,没有版本编译器选项将“像以前一样”编译,我猜这意味着它们不会。

    【讨论】:

    • 这正是您需要做的。如果没有版本说明,着色器将编译为 1.10。我想您会看到,在提出问题之前尝试一下会是一个好主意,因为您显然在提出问题后几分钟就尝试过。但没关系,现在你得到了一个很好的问题,并且得到了一个自我接受的答案。
    • 如果没有#version,它应该像#version 110一样编译它,因为这是最后一个#version是可选的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    相关资源
    最近更新 更多