mirror of
https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git
synced 2025-08-22 20:25:28 +08:00
Update 04 Hello Triangle.md
This commit is contained in:
@@ -160,8 +160,18 @@ void main()
|
||||
当前这个顶点着色器可能是我们能想到的最简单的顶点着色器了,因为我们对输入数据什么都没有处理就把它传到着色器的输出了。在真实的程序里输入数据通常都不是标准化设备坐标,所以我们首先必须先把它们转换至OpenGL的可视区域内。
|
||||
|
||||
## 编译着色器
|
||||
现在,我们暂时将顶点着色器的源代码硬编码在代码文件顶部的C风格字符串中:
|
||||
|
||||
我们已经写了一个顶点着色器源码(储存在一个C的字符串中),但是为了能够让OpenGL使用它,我们必须在运行时动态编译它的源码。
|
||||
```c++
|
||||
const char *vertexShaderSource = "#version 330 core\n"
|
||||
"layout (location = 0) in vec3 aPos;\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
|
||||
"}\0";
|
||||
```
|
||||
|
||||
为了能够让OpenGL使用它,我们必须在运行时动态编译它的源代码。
|
||||
|
||||
我们首先要做的是创建一个着色器对象,注意还是用ID来引用的。所以我们储存这个顶点着色器为`unsigned int`,然后用<fun>glCreateShader</fun>创建这个着色器:
|
||||
|
||||
@@ -217,7 +227,7 @@ void main()
|
||||
}
|
||||
```
|
||||
|
||||
片段着色器只需要一个输出变量,这个变量是一个4分量向量,它表示的是最终的输出颜色,我们应该自己将其计算出来。我们可以用`out`关键字声明输出变量,这里我们命名为<var>FragColor</var>。下面,我们将一个alpha值为1.0(1.0代表完全不透明)的橘黄色的`vec4`赋值给颜色输出。
|
||||
片段着色器只需要一个输出变量,这个变量是一个4分量向量,它表示的是最终的输出颜色,我们应该自己将其计算出来。声明输出变量可以使用`out`关键字,这里我们命名为<var>FragColor</var>。下面,我们将一个Alpha值为1.0(1.0代表完全不透明)的橘黄色的`vec4`赋值给颜色输出。
|
||||
|
||||
编译片段着色器的过程与顶点着色器类似,只不过我们使用<var>GL_FRAGMENT_SHADER</var>常量作为着色器类型:
|
||||
|
||||
|
Reference in New Issue
Block a user