first tile rendering
[fishladder.git] / fishladder.c
1 // Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved
2
3 //#define VG_STEAM
4 #include "vg/vg.h"
5
6 SHADER_DEFINE( colour_shader,
7
8 // VERTEX
9 "layout (location=0) in vec3 a_co;"
10 "uniform mat4 uPvm;"
11 ""
12 "void main()"
13 "{"
14 " vec4 vert_pos = uPvm * vec4( a_co, 1.0 );"
15 " gl_Position = vert_pos;"
16 "}",
17
18 // FRAGMENT
19 "out vec4 FragColor;"
20 "uniform vec4 uColour;"
21 ""
22 "void main()"
23 "{"
24 " FragColor = uColour;"
25 "}"
26 ,
27 UNIFORMS({ "uPvm", "uColour" })
28 )
29
30 mat4 m_projection;
31 mat4 m_view;
32 mat4 m_pv;
33
34 int main( int argc, char *argv[] )
35 {
36 vg_init( argc, argv, "FishLadder" );
37 }
38
39 void vg_update(void)
40 {
41 // Update camera
42 float ratio = (float)vg_window_y / (float)vg_window_x;
43 float const size = 7.5f;
44 glm_ortho( -size, size, -size*ratio, size*ratio, 0.1f, 100.f, m_projection );
45
46 glm_mat4_identity( m_view );
47 glm_translate_z( m_view, -10.f );
48 glm_rotate_x( m_view, -1.0f, m_view );
49
50 glm_mat4_mul( m_projection, m_view, m_pv );
51 }
52
53 GLuint tile_vao;
54 GLuint tile_vbo;
55
56 void vg_render(void)
57 {
58 glEnable( GL_DEPTH_TEST );
59 glClearColor( 0.94f, 0.94f, 0.94f, 1.0f );
60 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
61
62 SHADER_USE( colour_shader );
63 glUniformMatrix4fv( SHADER_UNIFORM( colour_shader, "uPvm" ), 1, GL_FALSE, (float *)m_pv );
64 glUniform4f( SHADER_UNIFORM( colour_shader, "uColour" ), 0.5f, 0.5f, 0.5f, 1.0f );
65
66 glBindVertexArray( tile_vao );
67 glDrawArrays( GL_TRIANGLES, 0, 6 );
68 }
69
70 void vg_start(void)
71 {
72 SHADER_INIT( colour_shader );
73
74 glGenVertexArrays( 1, &tile_vao );
75 glGenBuffers( 1, &tile_vbo );
76
77 float quad_mesh[] =
78 {
79 -0.5f, 0.f, -0.5f,
80 -0.5f, 0.f, 0.5f,
81 0.5f, 0.f, 0.5f,
82 -0.5f, 0.f, -0.5f,
83 0.5f, 0.f, 0.5f,
84 0.5f, 0.f, -0.5f
85 };
86
87 glBindVertexArray( tile_vao );
88 glBindBuffer( GL_ARRAY_BUFFER, tile_vbo );
89 glBufferData
90 (
91 GL_ARRAY_BUFFER,
92 sizeof( quad_mesh ),
93 quad_mesh,
94 GL_STATIC_DRAW
95 );
96
97 glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0 );
98 glEnableVertexAttribArray( 0 );
99
100 VG_CHECK_GL();
101 }
102
103 void vg_free(void)
104 {
105
106 }
107
108 void vg_ui(void)
109 {
110
111 }