Lumenarium/src_v2/editor/lumenarium_editor_renderer.cpp

94 lines
2.4 KiB
C++

internal void
edr_init(App_State* state)
{
v4 quad_verts[] = {
-0.5f, 0.5f, 0.0f, 1.0f,
-0.5f, -0.5f, 0.0f, 1.0f,
00.5f, -0.5f, 0.0f, 1.0f,
00.5f, 0.5f, 0.0f, 1.0f,
};
u32 quad_indices[] = {
3, 2, 1,
3, 1, 0,
};
char* shader_code_vert =
"#version 140\n"
"attribute vec4 coordinates;\n"
"void main(void) {\n"
" gl_Position = coordinates;\n"
"}";
char* shader_code_frag =
"#version 140\n"
"void main(void) {\n"
" gl_FragColor = vec4(1, 0, 1, 1);\n"
"}";
#if 0
/* ======= Geometry =======*/
glCreateBuffers(1, &buffer_vertex);
glBindBuffer(GL_ARRAY_BUFFER, buffer_vertex);
glBufferData(GL_ARRAY_BUFFER, quad_verts, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, NULL);
glCreateBuffer(1, &buffer_index);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer_index);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, quad_indices, GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, NULL);
/* ======= Shaders =======*/
shader_vert = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shader_vertex, shader_code_vert);
glCompileShader(shader_vert);
shader_frag = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(shader_frag, shader_code_frag);
glCompileShader(shader_frag);
shader_prog = glCreateProgram();
glAttachShader(shader_prog, shader_vert);
glAttachShader(shader_prog, shader_frag);
glLinkProgram(shader_prog);
glUseProgram(shader_prog);
/* ======= Associating shaders to buffer objects =======*/
glBindBuffer(GL_ARRAY_BUFFER, buffer_vertex);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer_index);
coord = glGetAttribLocation(shader_prog, "coordinates");
glVertexAttribPointer(coord, 4, GL_FLOAT, false, 0, 0);
glEnableVertexAttribArray(coord);
#endif
}
internal void
edr_render_quad()
{
#if 0
glBindBuffer(GL_ARRAY_BUFFER, buffer_vertex);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer_index);
glEnableVertexAttribArray(coord);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
#endif
}
internal void
edr_render(App_State* state)
{
Platform_Graphics_Frame_Desc desc = {};
desc.clear_color = { 0.1f, 0.1f, 0.1f, 1 };
desc.viewport_min = { 0, 0 };
desc.viewport_max = { 1600, 900 };
platform_frame_begin(desc);
platform_frame_clear();
#if 0
edr_render_quad();
#endif
}