天天看點

OpenGL_Shader簡介,OpenGL坐标系,UV和貼圖

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視窗上繪制任意形狀的幾何體了,點此獲得測試代碼。

  

繼續閱讀