From 5546e995e364bfeb7b12288b509e0843bed4f948 Mon Sep 17 00:00:00 2001 From: SuperAo Date: Tue, 2 Apr 2024 11:10:01 +0800 Subject: [PATCH] =?UTF-8?q?fix=20shader=20=E5=92=8C=20shader=20program=20?= =?UTF-8?q?=E6=9C=AA=E5=8C=BA=E5=88=86.=20#287=EF=BC=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=A0=A1=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/04 Advanced OpenGL/08 Advanced GLSL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/04 Advanced OpenGL/08 Advanced GLSL.md b/docs/04 Advanced OpenGL/08 Advanced GLSL.md index f634d76..3451767 100644 --- a/docs/04 Advanced OpenGL/08 Advanced GLSL.md +++ b/docs/04 Advanced OpenGL/08 Advanced GLSL.md @@ -4,7 +4,7 @@ ---|--- 作者 | JoeyDeVries 翻译 | Krasjet -校对 | 暂未校对 +校对 | AoZhang 这一小节并不会向你展示非常先进非常酷的新特性,也不会对场景的视觉质量有显著的提高。但是,这一节会或多或少涉及GLSL的一些有趣的地方以及一些很棒的技巧,它们可能在今后会帮助到你。简单来说,它们就是在组合使用OpenGL和GLSL创建程序时的一些**最好要知道的东西**,和一些**会让你生活更加轻松的特性**。 @@ -215,7 +215,7 @@ void main() 我们已经使用OpenGL很长时间了,学会了一些很酷的技巧,但也遇到了一些很麻烦的地方。比如说,当使用多于一个的着色器时,尽管大部分的uniform变量都是相同的,我们还是需要不断地设置它们,所以为什么要这么麻烦地重复设置它们呢? -OpenGL为我们提供了一个叫做Uniform缓冲对象(Uniform Buffer Object)的工具,它允许我们定义一系列在多个着色器中相同的**全局**Uniform变量。当使用Uniform缓冲对象的时候,我们只需要设置相关的uniform**一次**。当然,我们仍需要手动设置每个着色器中不同的uniform。并且创建和配置Uniform缓冲对象会有一点繁琐。 +OpenGL为我们提供了一个叫做Uniform缓冲对象(Uniform Buffer Object)的工具,它允许我们定义一系列在多个着色器程序中相同的**全局**Uniform变量。当使用Uniform缓冲对象的时候,我们只需要设置相关的uniform**一次**。当然,我们仍需要手动设置每个着色器中不同的uniform。并且创建和配置Uniform缓冲对象会有一点繁琐。 因为Uniform缓冲对象仍是一个缓冲,我们可以使用glGenBuffers来创建它,将它绑定到GL_UNIFORM_BUFFER缓冲目标,并将所有相关的uniform数据存入缓冲。在Uniform缓冲对象中储存数据是有一些规则的,我们将会在之后讨论它。首先,我们将使用一个简单的顶点着色器,将projectionview矩阵存储到所谓的Uniform块(Uniform Block)中: