Testing framework. Shader creation function. More dynstring functions
This commit is contained in:
70
src/main.c
70
src/main.c
@@ -15,6 +15,7 @@
|
||||
#include "log.h"
|
||||
#include "pltf/gl_funcs.h"
|
||||
#include "pltf/pltf.h"
|
||||
#include "shader.h"
|
||||
|
||||
// int _main() {
|
||||
// return 0;
|
||||
@@ -396,69 +397,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine,
|
||||
|
||||
glBindVertexArray(0);
|
||||
|
||||
// clang-format off
|
||||
const char* vertex_shader_src =
|
||||
"#version 460 core\n"
|
||||
"layout (location = 0) in vec3 a_pos;\n"
|
||||
"void main() {\n"
|
||||
" gl_Position = vec4(a_pos, 1.0);\n"
|
||||
"}\n"
|
||||
;
|
||||
|
||||
const char* fragment_shader_src =
|
||||
"#version 460 core\n"
|
||||
"out vec4 frag_color;\n"
|
||||
"void main() {\n"
|
||||
" frag_color = vec4(0.0, 0.0, 0.0, 1.0);\n"
|
||||
"}\n"
|
||||
;
|
||||
// clang-format on
|
||||
|
||||
const unsigned int vert_shader = glCreateShader(GL_VERTEX_SHADER);
|
||||
{
|
||||
const int len = strlen(vertex_shader_src);
|
||||
glShaderSource(vert_shader, 1, &vertex_shader_src, &len);
|
||||
glCompileShader(vert_shader);
|
||||
int compile_status = 0;
|
||||
glGetShaderiv(vert_shader, GL_COMPILE_STATUS, &compile_status);
|
||||
if (compile_status != GL_TRUE) {
|
||||
int info_log_len = 0;
|
||||
glGetShaderiv(vert_shader, GL_INFO_LOG_LENGTH, &info_log_len);
|
||||
char* err_str = (char*) malloc(sizeof(char) * info_log_len);
|
||||
glGetShaderInfoLog(vert_shader, info_log_len - 1, NULL, err_str);
|
||||
LOG_FATALF("Failed to compile vertex shader: %s", err_str);
|
||||
}
|
||||
}
|
||||
const unsigned int frag_shader = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
{
|
||||
const int len = strlen(fragment_shader_src);
|
||||
glShaderSource(frag_shader, 1, &fragment_shader_src, &len);
|
||||
glCompileShader(frag_shader);
|
||||
int compile_status = 0;
|
||||
glGetShaderiv(frag_shader, GL_COMPILE_STATUS, &compile_status);
|
||||
if (compile_status != GL_TRUE) {
|
||||
int info_log_len = 0;
|
||||
glGetShaderiv(frag_shader, GL_INFO_LOG_LENGTH, &info_log_len);
|
||||
char* err_str = (char*) malloc(sizeof(char) * info_log_len);
|
||||
glGetShaderInfoLog(frag_shader, info_log_len - 1, NULL, err_str);
|
||||
LOG_FATALF("Failed to compile fragment shader: %s", err_str);
|
||||
}
|
||||
}
|
||||
|
||||
const unsigned int shader_program = glCreateProgram();
|
||||
{
|
||||
|
||||
glAttachShader(shader_program, vert_shader);
|
||||
glAttachShader(shader_program, frag_shader);
|
||||
glLinkProgram(shader_program);
|
||||
int compile_status = 0;
|
||||
glGetProgramiv(shader_program, GL_LINK_STATUS, &compile_status);
|
||||
if (compile_status != GL_TRUE) {
|
||||
LOG_FATAL("Failed to link shader program.");
|
||||
}
|
||||
glDeleteShader(vert_shader);
|
||||
glDeleteShader(frag_shader);
|
||||
}
|
||||
const unsigned int shader = shader_create(
|
||||
"shader.vert",
|
||||
"shader.frag"
|
||||
);
|
||||
|
||||
MSG msg = { 0 };
|
||||
while (true) {
|
||||
@@ -472,7 +414,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine,
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
glUseProgram(shader_program);
|
||||
glUseProgram(shader);
|
||||
glBindVertexArray(triangle_vao);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, triangle_vert_count);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user