1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 04:35:28 +08:00

fix shader 和 shader program 未区分. #287,完成校对

This commit is contained in:
SuperAo
2024-04-02 11:10:01 +08:00
committed by Gary Wang
parent ad65666d0b
commit 5546e995e3

View File

@@ -4,7 +4,7 @@
---|--- ---|---
作者 | JoeyDeVries 作者 | JoeyDeVries
翻译 | Krasjet 翻译 | Krasjet
校对 | 暂未校对 校对 | AoZhang
这一小节并不会向你展示非常先进非常酷的新特性也不会对场景的视觉质量有显著的提高。但是这一节会或多或少涉及GLSL的一些有趣的地方以及一些很棒的技巧它们可能在今后会帮助到你。简单来说它们就是在组合使用OpenGL和GLSL创建程序时的一些**最好要知道的东西**,和一些**会让你生活更加轻松的特性**。 这一小节并不会向你展示非常先进非常酷的新特性也不会对场景的视觉质量有显著的提高。但是这一节会或多或少涉及GLSL的一些有趣的地方以及一些很棒的技巧它们可能在今后会帮助到你。简单来说它们就是在组合使用OpenGL和GLSL创建程序时的一些**最好要知道的东西**,和一些**会让你生活更加轻松的特性**。
@@ -215,7 +215,7 @@ void main()
我们已经使用OpenGL很长时间了学会了一些很酷的技巧但也遇到了一些很麻烦的地方。比如说当使用多于一个的着色器时尽管大部分的uniform变量都是相同的我们还是需要不断地设置它们所以为什么要这么麻烦地重复设置它们呢 我们已经使用OpenGL很长时间了学会了一些很酷的技巧但也遇到了一些很麻烦的地方。比如说当使用多于一个的着色器时尽管大部分的uniform变量都是相同的我们还是需要不断地设置它们所以为什么要这么麻烦地重复设置它们呢
OpenGL为我们提供了一个叫做<def>Uniform缓冲对象</def>(Uniform Buffer Object)的工具,它允许我们定义一系列在多个着色器中相同的**全局**Uniform变量。当使用Uniform缓冲对象的时候我们只需要设置相关的uniform**一次**。当然我们仍需要手动设置每个着色器中不同的uniform。并且创建和配置Uniform缓冲对象会有一点繁琐。 OpenGL为我们提供了一个叫做<def>Uniform缓冲对象</def>(Uniform Buffer Object)的工具,它允许我们定义一系列在多个着色器程序中相同的**全局**Uniform变量。当使用Uniform缓冲对象的时候我们只需要设置相关的uniform**一次**。当然我们仍需要手动设置每个着色器中不同的uniform。并且创建和配置Uniform缓冲对象会有一点繁琐。
因为Uniform缓冲对象仍是一个缓冲我们可以使用<fun>glGenBuffers</fun>来创建它,将它绑定到<var>GL_UNIFORM_BUFFER</var>缓冲目标并将所有相关的uniform数据存入缓冲。在Uniform缓冲对象中储存数据是有一些规则的我们将会在之后讨论它。首先我们将使用一个简单的顶点着色器将<var>projection</var>和<var>view</var>矩阵存储到所谓的<def>Uniform块</def>(Uniform Block)中: 因为Uniform缓冲对象仍是一个缓冲我们可以使用<fun>glGenBuffers</fun>来创建它,将它绑定到<var>GL_UNIFORM_BUFFER</var>缓冲目标并将所有相关的uniform数据存入缓冲。在Uniform缓冲对象中储存数据是有一些规则的我们将会在之后讨论它。首先我们将使用一个简单的顶点着色器将<var>projection</var>和<var>view</var>矩阵存储到所谓的<def>Uniform块</def>(Uniform Block)中: