OpenGL_Shader
- shader[着色器] 是GPU執行的程式,使用類C語言GLSL編寫
- 最基本的shader有:vertexShader[頂點着色器]&fragmentShader[片元着色器]
- vertexShader[頂點着色器]:一般用于繪制頂點線框。
- 以下是vertexShader源代碼:
-
1 #version 450 core 2 //使用OpenGL4.5 3 4 layout (location = 0) in vec3 aPos; 5 layout (location = 1) in vec3 aNormal; 6 layout (location = 2) in vec2 aTexCoords; 7 //分别從 VAO 的0,1,2号欄位加載 aPos[頂點位置],aNormal[法向量],aTexCoords[UV坐标] 8 9 out vec2 TexCoords; 10 //向之後的subShader傳遞UV坐标 11 12 uniform mat4 model; 13 uniform mat4 view; 14 uniform mat4 projection; 15 //從CPU直接向shader灌入資料,注意要在shader執行前灌入 16 17 void main() 18 { 19 TexCoords = aTexCoords; 20 gl_Position = projection * view * model * vec4(aPos, 1.0); 21 }
- fragmentShader[片元着色器]:用于為片元着色。
- 以下是fragmentShader源代碼:
-
1 #version 450 core 2 //使用OpenGL4.5 3 4 out vec4 FragColor; 5 //向下一步的subShader輸出 片元顔色 6 7 in vec2 TexCoords; 8 //接收來自前面subShader輸出的資料 9 10 uniform sampler2D texture_diffuse1; 11 //接收來自CPU的 [diffuse貼圖] 檔案 12 13 void main() 14 { 15 FragColor = texture(texture_diffuse1, TexCoords); 16 //根據UV貼好貼圖,并傳回給FragColor 17 }
至此,你已經可以在OpenGL視窗上繪制任意形狀的幾何體了,點此獲得測試代碼。