gpt4 book ai didi

OpenGL 着色语言不同类型的变量(限定符)

转载 作者:行者123 更新时间:2023-12-02 11:59:16 27 4
gpt4 key购买 nike

我一直在使用 OpenGL 编写程序。最近,我开始学习OpenGL着色语言。我是新手;因此,请在回答中详细说明。

我的问题是:

  1. GLSL 中有哪些不同类型的变量(限定符)?
  2. 它们的用途是什么?
  3. 它们有何不同?

我只熟悉“变化”变量,它从顶点着色器传递到片段着色器以在顶点之间插值。除此之外,我一无所知。

最佳答案

在 OpenGL 3+ 中:

  • varying已弃用
  • const是为了......好吧,常数!
  • uniform用于每次绘制调用(最多)值
  • in用于来自前一个管道阶段的输入,即最多每个顶点(或每个片段)值,如果使用 glAttribDivisor 和硬件实例化,则每个基元
  • out用于输出到下一个阶段

关于片段着色器的输出:在 OpenGL3 及更高版本中,片段着色器输出的大多数内置变量(例如 gl_FragColor ,但 gl_FragDepth 除外)已被弃用,应替换为 user-定义out变量。

如果您要输出到默认帧缓冲区,则您声明为片段着色器的输出的任何内容最终都会出现在颜色缓冲区中。如果您已将 FBO 与多个颜色缓冲区(即多个渲染目标)绑定(bind)在一起,则需要手动绑定(bind)每个 out通过glBindFragDataLocationIndexed将变量设置为正确的颜色缓冲区索引.

您可能想要的有关 GLSL(“服务器”)端和 OpenGL(“客户端”)端的所有详细信息都可以找到:

关于OpenGL 着色语言不同类型的变量(限定符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6196007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com