Testing framework. Shader creation function. More dynstring functions

This commit is contained in:
2026-07-02 11:57:35 +03:00
parent 94ea46a320
commit 4a155d66ee
12 changed files with 7388 additions and 71 deletions

View File

@@ -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);