首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLSL自动优化

GLSL自动优化
EN

Stack Overflow用户
提问于 2018-01-06 00:33:06
回答 1查看 833关注 0票数 4

我有三个问题与GLSL自动优化(?)进程。

  1. 未使用的变量->是glsl,删除所有不影响最终片段着色像素的变量(out变量)。
  2. 未使用的函数->是glsl删除所有未定义的函数之前的void .?
  3. 那么ins和outs变量呢。一个例子:我有100个着色器,它发送一个纹理坐标从顶点着色器到碎片着色器。在片段着色中,这些配位体对最终颜色没有影响。glsl会删除这个变量吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-06 08:48:47

这一点没有明确规定。OpenGL规范说:

请参阅OpenGL 4.6核心剖面规范. 7.6均匀变量.第130页

7.6统一变量 如OpenGL阴影语言规范所述,着色器可以声明命名为统一变量。如果编译器和链接器确定在执行可执行代码时制服实际上将被访问,则制服被视为活动制服。在编译器和链接器无法确定的情况下,制服将被认为是有效的。

请参阅OpenGL 4.6核心剖面规范. 7.3.1程序接口.第101页

7.3.1程序接口 当程序对象成为当前呈现状态的一部分时,其可执行代码可以通过各种接口与其他GL管道级或应用程序代码通信。当程序被链接时,GL为每个接口构建一个活动资源列表。活动资源的示例包括变量、接口块和着色器代码使用的子程序。在着色器代码中引用的资源被认为是活动的,除非编译器和链接器能够确定它们对程序的可执行代码产生的结果没有明显的影响。例如,如果声明了变量,但它们没有在可执行代码中使用,则这些变量可能被视为非活动变量,仅用于不会被执行的if语句的子句中,仅用于从未调用的函数,或仅用于计算对任何着色器输出没有影响的临时变量。在编译器或链接器无法确定的情况下,任何由着色器代码引用的资源都将被认为是活动的。任何接口的活动资源集都是依赖于实现的,因为它依赖于编译器和链接器执行的各种分析和优化。 如果程序链接成功,GL将根据链接生成的可执行代码生成活动资源列表。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48123144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档