Opengl 程序管道着色器变量交换
我需要一个vec4和一个float从顶点着色器传递到几何体着色器,然后传递到片段着色器。3个着色器属于3个不同的程序,以保持统一唯一,并且3个着色器收集在单个程序管道中,并根据需要附加/分离几何体着色器 GL_ARB_separate_shader_对象扩展说明: GLSL有一个“按名称会合”模型,用于将不同的输出变量连接到后续着色器的不同输入变量。对于单独的着色器,无法保证前面的着色器是否会写入给定的用户定义输入变量。HLSL9、Cg和OpenGL汇编扩展程序通过使用“API资源集合”模型来处理这种情况在GLSL术语中,这意味着单独的GLSL着色器/必须/通过内置变量而不是用户定义的变量进行通信。 很好,在顶点和几何体着色器中,我对vec4使用gl_FrontColor,对float使用gl_FogFragCoord,通过gl_FogFragCoord和gl_Color在片段中读取它们 行得通,很好。。但是我是说。。cmon,真的吗? 我能理解这一切背后的理由,但对我来说,这真的是一个糟糕的解决办法。Opengl 程序管道着色器变量交换,opengl,opengl-3,Opengl,Opengl 3,我需要一个vec4和一个float从顶点着色器传递到几何体着色器,然后传递到片段着色器。3个着色器属于3个不同的程序,以保持统一唯一,并且3个着色器收集在单个程序管道中,并根据需要附加/分离几何体着色器 GL_ARB_separate_shader_对象扩展说明: GLSL有一个“按名称会合”模型,用于将不同的输出变量连接到后续着色器的不同输入变量。对于单独的着色器,无法保证前面的着色器是否会写入给定的用户定义输入变量。HLSL9、Cg和OpenGL汇编扩展程序通过使用“API资源集合”模型来处
如果来自不同程序的不同着色器都在同一个程序管道中工作,那么真的没有其他方法可以让它们相互通信吗?让我们先把这个问题解决掉:你在那里读到的关于扩展/核心功能的内容是不正确的。下面是一个解释,如果它在一个规范中是如何不正确的,以及为什么这个规范中有不正确的行 阅读扩展规范时,请务必注意以下内容之间的差异:
- 规范性文本:这定义了扩展的实际工作方式。这是课文的重点
- 描述性文本:这提供了功能的用途的非约束性概述。它是无约束力的,这意味着实际的规范性文本可能与之相反
- 元文本:这解释了规范文本背后的推理。它还表示页眉和页脚信息(谁编写了扩展名、发布日期等)
您不能使用此扩展名执行此操作。问题部分比毫无价值更糟糕;这是一种积极的误导。您必须阅读spec语言。让我们先把它放在一边:您在那里读到的内容与扩展/核心特性不符。下面是一个解释,如果它在一个规范中是如何不正确的,以及为什么这个规范中有不正确的行 阅读扩展规范时,请务必注意以下内容之间的差异:
- 规范性文本:这定义了扩展的实际工作方式。这是课文的重点
- 描述性文本:这提供了功能的用途的非约束性概述。它是无约束力的,这意味着实际的规范性文本可能与之相反
- 元文本:这解释了规范文本背后的推理。它还表示页眉和页脚信息(谁编写了扩展名、发布日期等)