Эх сурвалжийг харах

V0.7.5
1、修复了OpenGL程序的bug

apple 1 долоо хоног өмнө
parent
commit
4a32172456

+ 1 - 1
External

@@ -1 +1 @@
-Subproject commit 1ae46cf938d6a5ba0d1ab43e95f6a94dacbf1f86
+Subproject commit ec11806d69fafc7584de4382161bce67bacfefaa

+ 7 - 3
demo/VideoPlayerGL/GLWidget/PlayerGLWidget.cpp

@@ -63,7 +63,7 @@ void PlayerGLWidget::initializeGL()
     glGenBuffers(1, &EBO1);
     glGenBuffers(1, &EBO1);
     /* 绑定缓冲区 */
     /* 绑定缓冲区 */
     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO1);
     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO1);
-    glBufferData(EBO1, sizeof(indices), indices, GL_STATIC_DRAW);
+    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
 
 
     
     
 
 
@@ -100,9 +100,11 @@ void PlayerGLWidget::initializeGL()
     const char* vertexShaderSource = R"(
     const char* vertexShaderSource = R"(
         #version 330 core
         #version 330 core
         layout(location = 0) in vec3 aPos;
         layout(location = 0) in vec3 aPos;
+        out vec4 vertexColor;
         void main()
         void main()
         {
         {
             gl_Position = vec4(aPos, 1.0);
             gl_Position = vec4(aPos, 1.0);
+            vertexColor = vec4(0.5, 0, 0, 1.0);
         }
         }
     )";
     )";
 
 
@@ -135,9 +137,10 @@ void PlayerGLWidget::initializeGL()
     const char* fragmentShaderSource = R"(
     const char* fragmentShaderSource = R"(
         #version 330 core
         #version 330 core
         out vec4 FragColor;
         out vec4 FragColor;
+        in vec4 vertexColor;
         void main()
         void main()
         {
         {
-            FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);
+            FragColor = vertexColor;
         }
         }
     )";
     )";
     /* 创建一个片段着色器对象 */
     /* 创建一个片段着色器对象 */
@@ -159,7 +162,7 @@ void PlayerGLWidget::initializeGL()
      * 着色器程序对象
      * 着色器程序对象
      * ------------------------------------------------------------------------------------ */
      * ------------------------------------------------------------------------------------ */
     /* 创建一个着色器程序对象 */
     /* 创建一个着色器程序对象 */
-    GLuint shaderProgram = glCreateProgram();
+    shaderProgram = glCreateProgram();
     /* 将顶点着色器和片段着色器附加到着色器程序对象上 */
     /* 将顶点着色器和片段着色器附加到着色器程序对象上 */
     glAttachShader(shaderProgram, vertexShader);
     glAttachShader(shaderProgram, vertexShader);
     glAttachShader(shaderProgram, fragmentShader);
     glAttachShader(shaderProgram, fragmentShader);
@@ -203,6 +206,7 @@ void PlayerGLWidget::paintGL()
     /* 绑定VAO1到 GL_VERTEX_ARRAY 上,表示VAO1是一个顶点数组对象 */
     /* 绑定VAO1到 GL_VERTEX_ARRAY 上,表示VAO1是一个顶点数组对象 */
     glBindVertexArray(VAO1);
     glBindVertexArray(VAO1);
     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
+    // glDrawArrays(GL_TRIANGLES, 0, 3);
     /* 解绑VAO1 */
     /* 解绑VAO1 */
     glBindVertexArray(0);
     glBindVertexArray(0);
     
     

+ 18 - 0
demo/VideoPlayerGL/shader.glsl

@@ -0,0 +1,18 @@
+
+// 版本号可以是330, 410, 420, 430, 440, 450等,具体取决于你的OpenGL版本和需求
+#version version_number // GLSL版本号
+
+in type in_variable_name; //输入变量
+in type in_variable_name;
+
+out type out_variable_name; //输出变量
+
+uniform type uniform_name;  // uniform变量
+
+void main()
+{
+  // 处理输入并进行一些图形操作
+  ...
+  // 输出处理过的结果到输出变量
+  out_variable_name = weird_stuff_we_processed;
+}