glfwTerminate();
}
-internal GLuint
-load_shader(GLenum shader_type, const char* shader_loc)
-{
- logprint(LOG_LEVEL_INFO, "Loading shader: %s", shader_loc);
-
- GLuint shader = glCreateShader(shader_type);
-
- FILE* shader_file = fopen(shader_loc, "rb");
- if (shader_file == NULL) panic_and_die("Shader file not found: %s\n", shader_loc);
-
- fseek(shader_file, 0, SEEK_END);
- i32 shader_file_size = ftell(shader_file);
- fseek(shader_file, 0, SEEK_SET);
-
- char* shader_buffer = (char *) malloc(shader_file_size + 1);
- fread(shader_buffer, 1, shader_file_size, shader_file);
- fclose(shader_file);
-
- shader_buffer[shader_file_size] = 0;
-
- glShaderSource(shader, 1, (const char* const*) &shader_buffer, NULL);
- glCompileShader(shader);
-
- GLint successful;
- glGetShaderiv(shader, GL_COMPILE_STATUS, &successful);
- if (successful != GL_TRUE)
+namespace gl_util {
+ internal GLuint
+ load_shader(GLenum shader_type, const char* shader_loc)
{
- GLsizei log_length = 0;
- GLchar shader_log[1024];
- glGetShaderInfoLog(shader, 1023, &log_length, shader_log);
- shader_log[log_length] = 0;
+ logprint(LOG_LEVEL_INFO, "Loading shader: %s", shader_loc);
+
+ GLuint shader = glCreateShader(shader_type);
+
+ FILE* shader_file = fopen(shader_loc, "rb");
+ if (shader_file == NULL) panic_and_die("Shader file not found: %s\n", shader_loc);
+
+ fseek(shader_file, 0, SEEK_END);
+ i32 shader_file_size = ftell(shader_file);
+ fseek(shader_file, 0, SEEK_SET);
+
+ char* shader_buffer = (char *) malloc(shader_file_size + 1);
+ fread(shader_buffer, 1, shader_file_size, shader_file);
+ fclose(shader_file);
+
+ shader_buffer[shader_file_size] = 0;
+
+ glShaderSource(shader, 1, (const char* const*) &shader_buffer, NULL);
+ glCompileShader(shader);
+
+ GLint successful;
+ glGetShaderiv(shader, GL_COMPILE_STATUS, &successful);
+ if (successful != GL_TRUE)
+ {
+ GLsizei log_length = 0;
+ GLchar shader_log[1024];
+ glGetShaderInfoLog(shader, 1023, &log_length, shader_log);
+ shader_log[log_length] = 0;
+
+ panic_and_die("Error compiling shader %s:\n%s\n",
+ shader_loc,
+ shader_log);
+ }
- panic_and_die("Error compiling shader %s:\n%s\n",
- shader_loc,
- shader_log);
+ free(shader_buffer);
+
+ return shader;
}
- free(shader_buffer);
-
- return shader;
-}
-
-internal GLuint
-create_program(GLuint vertex_shader, GLuint fragment_shader)
-{
- logprint(LOG_LEVEL_INFO, "Linking GL program");
-
- GLuint program = glCreateProgram();
- glAttachShader(program, vertex_shader);
- glAttachShader(program, fragment_shader);
- glLinkProgram(program);
-
- GLint successful;
- glGetProgramiv(program, GL_LINK_STATUS, &successful);
- if (successful != GL_TRUE)
+ internal GLuint
+ create_program(GLuint vertex_shader, GLuint fragment_shader)
{
- GLsizei log_length = 0;
- GLchar program_log[1024];
- glGetProgramInfoLog(program, 1023, &log_length, program_log);
- program_log[log_length] = 0;
+ logprint(LOG_LEVEL_INFO, "Linking GL program");
+
+ GLuint program = glCreateProgram();
+ glAttachShader(program, vertex_shader);
+ glAttachShader(program, fragment_shader);
+ glLinkProgram(program);
+
+ GLint successful;
+ glGetProgramiv(program, GL_LINK_STATUS, &successful);
+ if (successful != GL_TRUE)
+ {
+ GLsizei log_length = 0;
+ GLchar program_log[1024];
+ glGetProgramInfoLog(program, 1023, &log_length, program_log);
+ program_log[log_length] = 0;
+
+ panic_and_die("Error linking program:\n%s", program_log);
+ }
- panic_and_die("Error linking program:\n%s", program_log);
+ return program;
}
-
- return program;
}
-
#define CIRCLE_POINT_COUNT 36 // NOTE(Brendan): Treat a circle as a many-sided polygon.
// NOTE(Brendan): Returns the VAO where the mesh data was bound.
circle_mesh = create_circle_mesh();
- GLuint v_shader = load_shader(GL_VERTEX_SHADER, "res/shaders/planet_vert.glsl");
- GLuint f_shader = load_shader(GL_FRAGMENT_SHADER, "res/shaders/planet_frag.glsl");
- GLuint program = create_program(v_shader, f_shader);
+ GLuint v_shader = gl_util::load_shader(GL_VERTEX_SHADER, "res/shaders/planet_vert.glsl");
+ GLuint f_shader = gl_util::load_shader(GL_FRAGMENT_SHADER, "res/shaders/planet_frag.glsl");
+ GLuint program = gl_util::create_program(v_shader, f_shader);
glUseProgram(program);
mat4 ortho_mat;
GLuint ortho_mat_loc = glGetUniformLocation(program, "u_proj");
glUniformMatrix4fv(ortho_mat_loc, 1, false, (f32 *) ortho_mat);
- auto bodies = make_bodies(128);
+ auto bodies = alloc_bodies(128);
foreach(i, 0, 128)
{
bodies[i].pos = V2f{ randf(0, 800), randf(0, 800) };