我想有一个单独的着色器程序,它有一个计算阶段和标准的图形阶段(顶点,苔丝控制,苔丝评估,片段)。
不幸的是,如果我将计算阶段附加到程序的其余部分,然后将其链接起来,那么调用到位置查询,比如glGetAttribLocation (对于任何阶段的制服/属性),就会开始返回-1,表明它们找不到命名的对象。我还尝试使用布局(location=N),结果没有绘制任何东西。
如果我将这些步骤附加到两个不同的着色器程序上,并将它们一个接一个地使用,则两者都工作得很好(计算着色器写入VBO,绘制着色器从相同的VBO读取),但我必须在它们之间切换。
计算阶段与标准图形阶段的结合是否有局限性?我能找到的所有例子都有两个程序,但我还没有找到解释为什么需要这样做的原因。
发布于 2020-07-11 23:08:58
OpenGL主动禁止将包含计算着色器的程序与任何非计算着色器类型链接起来。当你尝试的时候,你应该得到一个链接错误。
而且,我们真的没有理由这么做。唯一假设的好处,你可能从它得到是有两套着色器共享统一的价值。只是在同一个程序中没有什么收获。
https://stackoverflow.com/questions/62855425
复制相似问题