Przeglądaj źródła

V1.2.3
1、修改了着色器文件

apple 4 dni temu
rodzic
commit
446d2a1b42

+ 3 - 2
demo/OpenGLDemo/GLLearning/ShaderSource/fragmentShader1.glsl

@@ -4,9 +4,10 @@ in vec4 vertexColor;
 in vec2 TexCoord;
 out vec4 FragColor1;
 
-uniform sampler2D ourTexture;
+uniform sampler2D ourTexture1;
+uniform sampler2D ourTexture2;
 
 void main()
 {
-    FragColor1 = texture(ourTexture, TexCoord);
+    FragColor1 = mix(texture(ourTexture1, TexCoord), texture(ourTexture2, TexCoord), 0.5);
 }

+ 22 - 1
demo/OpenGLDemo/GLLearning/WidgetGL4.cpp

@@ -97,7 +97,6 @@ void WidgetGL4::initializeGL()
         return;
     }
     /* 创建纹理 */
-    
     glGenTextures(1, &m_texture1);
     glBindTexture(GL_TEXTURE_2D, m_texture1);
     /* 设置纹理参数 */
@@ -108,6 +107,25 @@ void WidgetGL4::initializeGL()
     /*  将纹理图片数据传递给OpenGL */
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.width(), image.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, image.bits());
     glGenerateMipmap(GL_TEXTURE_2D);
+
+    /* 创建第二个纹理 */
+    QImage image2;
+    image2.load(":/image/awesomeface.png");
+    glGenTextures(1, &m_texture2);
+    glBindTexture(GL_TEXTURE_2D, m_texture2);
+    /* 设置纹理参数 */
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+    /*  将纹理图片数据传递给OpenGL */
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image2.width(), image2.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, image2.bits());
+    glGenerateMipmap(GL_TEXTURE_2D);
+
+    /* 设置纹理单元 */
+    m_shader->use();
+    m_shader->setInt("ourTexture1", 0);
+    m_shader->setInt("ourTexture2", 1);
 }
 
 void WidgetGL4::resizeGL(int w, int h)
@@ -125,7 +143,10 @@ void WidgetGL4::paintGL()
     /* 绘制四边形 */
     m_shader->use();
     glBindVertexArray(m_VAO);
+    glActiveTexture(GL_TEXTURE0);
     glBindTexture(GL_TEXTURE_2D, m_texture1);
+    glActiveTexture(GL_TEXTURE1);
+    glBindTexture(GL_TEXTURE_2D, m_texture2);
 
     // glDrawArrays(GL_TRIANGLES, 0, 6);
     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

+ 1 - 0
demo/OpenGLDemo/GLLearning/WidgetGL4.h

@@ -29,6 +29,7 @@ private:
     GLuint m_shaderProgam = 0;
     GLuint m_VAO = 0;
     GLuint m_texture1 = 0;
+    GLuint m_texture2 = 0;
     Shader* m_shader = nullptr;
 };