commit 0638febb6ce2ac15f7d8acece64f19739270bec9
parent 038e30e7e25f9d000f95ff3de3e7d2db8134c2eb
Author: amin <dev@aminmesbah.com>
Date:   Sun, 23 Jun 2019 07:51:30 +0000
Render a simple triangle to debug webgl problems
FossilOrigin-Name: a1cc49a21984d9c2ada637711ebe8e433073da9da77cefc8686b0489c9430ad5
Diffstat:
3 files changed, 92 insertions(+), 17 deletions(-)
diff --git a/shader/cube_f.glsl b/shader/cube_f.glsl
@@ -1,14 +1,25 @@
 #version 300 es
-
 precision highp float;
 
-uniform float alpha;
-
-in vec3 color;
+in vec4 vertex_color;
 
-out vec4 frag_color;
+out vec4 color;
 
 void main()
 {
-    frag_color = vec4(color, alpha);
+    color = vertex_color;
 }
+//#version 300 es
+//
+//precision highp float;
+//
+//uniform float alpha;
+//
+//in vec3 color;
+//
+//out vec4 frag_color;
+//
+//void main()
+//{
+//    frag_color = vec4(color, alpha);
+//}
diff --git a/shader/cube_v.glsl b/shader/cube_v.glsl
@@ -1,16 +1,28 @@
 #version 300 es
 
-layout (location = 0) in vec3 a_position;
-layout (location = 1) in vec3 a_color;
+layout (location = 0) in vec2 position;
+layout (location = 1) in vec3 color;
 
-uniform mat4 model;
-uniform mat4 view;
-uniform mat4 projection;
-
-out vec3 color;
+out vec4 vertex_color;
 
 void main()
 {
-    gl_Position = projection * view * model * vec4(a_position, 1.0f);
-    color = a_color;
+    gl_Position = vec4(position, 0.0f, 1.0f);
+    vertex_color = vec4(color, 1.0f);
 }
+//#version 300 es
+//
+//layout (location = 0) in vec3 a_position;
+//layout (location = 1) in vec3 a_color;
+//
+//uniform mat4 model;
+//uniform mat4 view;
+//uniform mat4 projection;
+//
+//out vec3 color;
+//
+//void main()
+//{
+//    gl_Position = projection * view * model * vec4(a_position, 1.0f);
+//    color = a_color;
+//}
diff --git a/src/game.c b/src/game.c
@@ -8,6 +8,45 @@
 
 void game_init(struct GameState *game_state, u32 screen_width, u32 screen_height)
 {
+#if 1
+    {
+        GLfloat triangle_vertices[] = {
+            // positions   // colors
+            -0.5f, -0.5f,  1.0f,  0.0f,  0.0f,
+            0.5f, -0.5f,  0.0f,  1.0f,  0.0f,
+            0.0f,  0.5f,  0.0f,  0.0f,  1.0f,
+        };
+        u32 elements[] = {
+            0, 1, 2,
+        };
+
+        GLuint VBO;
+        GLuint VAO;
+        glGenVertexArrays(1, &VAO);
+        glGenBuffers(1, &VBO);
+
+        glBindVertexArray(VAO);
+        glBindBuffer(GL_ARRAY_BUFFER, VBO);
+        glBufferData(GL_ARRAY_BUFFER, sizeof(triangle_vertices), triangle_vertices, GL_STATIC_DRAW);
+
+        // positions
+        glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), (GLvoid*)0);
+        glEnableVertexAttribArray(0);
+
+        // colors
+        glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), (GLvoid*)(2 * sizeof(GLfloat)));
+        glEnableVertexAttribArray(1);
+
+        u32 cube_ebo;
+        glGenBuffers(1, &cube_ebo);
+        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cube_ebo);
+        glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW);
+
+        game_state->cube_vao = VAO;
+        game_state->cube_vbo = VBO;
+        game_state->cube_ebo = cube_ebo;
+    }
+#else
     // load cube vertex data
     {
         f32 cube_vertices[] = {
@@ -57,6 +96,7 @@ void game_init(struct GameState *game_state, u32 screen_width, u32 screen_height
         game_state->cube_vbo = cube_vbo;
         game_state->cube_ebo = cube_ebo;
     }
+#endif
 
     // game_shader_load
     {
@@ -72,15 +112,26 @@ void game_init(struct GameState *game_state, u32 screen_width, u32 screen_height
         game_state->cube_shader = main_shader;
     }
 
-    glEnable(GL_DEPTH_TEST);
+    //glEnable(GL_DEPTH_TEST);
 
 #ifndef GAME_WEBGL
-    glEnable(GL_MULTISAMPLE);
+    //glEnable(GL_MULTISAMPLE);
 #endif
 }
 
 void game_update_and_render(struct GameState *game_state, float dt, u32 screen_width, u32 screen_height)
 {
+#if 1
+    {
+        glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
+        glClear(GL_COLOR_BUFFER_BIT);
+
+        shader_use(&game_state->cube_shader);
+
+        //glDrawArrays(GL_TRIANGLES, 0, 3);
+        glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0);
+    }
+#else
     glDepthMask(GL_TRUE);
     glClearColor(0.2f, 0.2f, 0.3f, 1.0f);
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@@ -124,6 +175,7 @@ void game_update_and_render(struct GameState *game_state, float dt, u32 screen_w
         glEnable(GL_DEPTH_TEST);
         glDisable(GL_BLEND);
     }
+#endif
 }
 
 void game_cleanup(struct GameState *game_state)