From 752a065246fc847ca513d08a3f503af786416899 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Thu, 14 May 2026 12:07:24 +0200 Subject: [PATCH] =?UTF-8?q?VERSI=C3=93=201.5.10:=20-=20[NEW]=20Shaders=20p?= =?UTF-8?q?assats=20al=20backend=20SDL3.=20Los=20=C3=BAltimos=20vestigios?= =?UTF-8?q?=20del=20antiguo=20jail=5Fshader=20han=20sido=20barridos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/backends/SDL3/audio.cpp | 3 +- source/backends/SDL3/shader.cpp | 246 ++++++++++++++++++++++++++++++ source/backends/SDL3/video.cpp | 7 +- source/backends/backend.h | 8 + source/mini/shader/shader.cpp | 262 +------------------------------- source/mini/shader/shader.h | 14 -- source/mini/version.h | 2 +- 7 files changed, 264 insertions(+), 278 deletions(-) create mode 100644 source/backends/SDL3/shader.cpp diff --git a/source/backends/SDL3/audio.cpp b/source/backends/SDL3/audio.cpp index 60d3fcb..3be73a0 100644 --- a/source/backends/SDL3/audio.cpp +++ b/source/backends/SDL3/audio.cpp @@ -1,11 +1,10 @@ #if BACKEND == SDL3 #include "backends/backend.h" +#include "state.h" #include "external/stb_vorbis.h" #include "other/log.h" -#include - #include #include diff --git a/source/backends/SDL3/shader.cpp b/source/backends/SDL3/shader.cpp new file mode 100644 index 0000000..2008a7e --- /dev/null +++ b/source/backends/SDL3/shader.cpp @@ -0,0 +1,246 @@ +#if BACKEND == SDL3 + +#include "backends/backend.h" +#include "state.h" +#include "mini/file/file.h" +#include "mini/win/win.h" + +#include + +#ifdef __APPLE__ + #include "CoreFoundation/CoreFoundation.h" + #include + + #if ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 + #include + #else + #include + #endif //!ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 +#else + #include + #include +#endif + +namespace backend +{ + namespace shader + { + GLuint programId = 0; + SDL_Point win_size = {640, 480}; + SDL_FPoint tex_size = {320, 240}; + bool can_use_opengl = false; + bool using_opengl = false; + + #ifndef __APPLE__ + + // I'm avoiding the use of GLEW or some extensions handler, but that + // doesn't mean you should... + PFNGLCREATESHADERPROC glCreateShader; + PFNGLSHADERSOURCEPROC glShaderSource; + PFNGLCOMPILESHADERPROC glCompileShader; + PFNGLGETSHADERIVPROC glGetShaderiv; + PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; + PFNGLDELETESHADERPROC glDeleteShader; + PFNGLATTACHSHADERPROC glAttachShader; + PFNGLCREATEPROGRAMPROC glCreateProgram; + PFNGLDELETEPROGRAMPROC glDeleteProgram; + PFNGLLINKPROGRAMPROC glLinkProgram; + PFNGLVALIDATEPROGRAMPROC glValidateProgram; + PFNGLGETPROGRAMIVPROC glGetProgramiv; + PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; + PFNGLUSEPROGRAMPROC glUseProgram; + PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; + PFNGLACTIVETEXTUREPROC glActiveTexture; + + + bool initGLExtensions() { + glCreateShader = (PFNGLCREATESHADERPROC)SDL_GL_GetProcAddress("glCreateShader"); + glShaderSource = (PFNGLSHADERSOURCEPROC)SDL_GL_GetProcAddress("glShaderSource"); + glCompileShader = (PFNGLCOMPILESHADERPROC)SDL_GL_GetProcAddress("glCompileShader"); + glGetShaderiv = (PFNGLGETSHADERIVPROC)SDL_GL_GetProcAddress("glGetShaderiv"); + glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)SDL_GL_GetProcAddress("glGetShaderInfoLog"); + glDeleteShader = (PFNGLDELETESHADERPROC)SDL_GL_GetProcAddress("glDeleteShader"); + glAttachShader = (PFNGLATTACHSHADERPROC)SDL_GL_GetProcAddress("glAttachShader"); + glCreateProgram = (PFNGLCREATEPROGRAMPROC)SDL_GL_GetProcAddress("glCreateProgram"); + glDeleteProgram = (PFNGLDELETEPROGRAMPROC)SDL_GL_GetProcAddress("glDeleteProgram"); + glLinkProgram = (PFNGLLINKPROGRAMPROC)SDL_GL_GetProcAddress("glLinkProgram"); + glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)SDL_GL_GetProcAddress("glValidateProgram"); + glGetProgramiv = (PFNGLGETPROGRAMIVPROC)SDL_GL_GetProcAddress("glGetProgramiv"); + glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)SDL_GL_GetProcAddress("glGetProgramInfoLog"); + glUseProgram = (PFNGLUSEPROGRAMPROC)SDL_GL_GetProcAddress("glUseProgram"); + glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)SDL_GL_GetProcAddress("glGetUniformLocation"); + glActiveTexture = (PFNGLACTIVETEXTUREPROC)SDL_GL_GetProcAddress("glActiveTexture"); + + return glCreateShader && glShaderSource && glCompileShader && glGetShaderiv && + glGetShaderInfoLog && glDeleteShader && glAttachShader && glCreateProgram && + glDeleteProgram && glLinkProgram && glValidateProgram && glGetProgramiv && + glGetProgramInfoLog && glUseProgram && glGetUniformLocation; + } + + #endif + + GLuint compileShader(const char* source, GLuint shaderType) { + // Create ID for shader + GLuint result = glCreateShader(shaderType); + // Add define depending on shader type + const char *sources[2] = { shaderType==GL_VERTEX_SHADER?"#define VERTEX\n":"#define FRAGMENT\n", source }; + // Define shader text + glShaderSource(result, 2, sources, NULL); + // Compile shader + glCompileShader(result); + + //Check vertex shader for errors + GLint shaderCompiled = GL_FALSE; + glGetShaderiv( result, GL_COMPILE_STATUS, &shaderCompiled ); + if (shaderCompiled != GL_TRUE) + { + std::cout << "Error en la compilación: " << result << "!" << std::endl; + GLint logLength; + glGetShaderiv(result, GL_INFO_LOG_LENGTH, &logLength); + if (logLength > 0) + { + GLchar *log = (GLchar*)malloc(logLength); + glGetShaderInfoLog(result, logLength, &logLength, log); + std::cout << "Shader compile log:" << log << std::endl; + //std::cout << source << std::endl; + free(log); + } + glDeleteShader(result); + result = 0; + } + return result; + } + + GLuint compileProgram(const char* vertexShaderSource, const char* fragmentShaderSource) + { + GLuint programId = 0; + GLuint vtxShaderId, fragShaderId; + + if (programId != 0) glDeleteProgram(programId); + programId = glCreateProgram(); + + + vtxShaderId = compileShader(vertexShaderSource, GL_VERTEX_SHADER); + fragShaderId = compileShader(fragmentShaderSource?fragmentShaderSource:vertexShaderSource, GL_FRAGMENT_SHADER); + + if(vtxShaderId && fragShaderId) + { + // Associate shader with program + glAttachShader(programId, vtxShaderId); + glAttachShader(programId, fragShaderId); + glLinkProgram(programId); + glValidateProgram(programId); + + // Check the status of the compile/link + GLint logLen; + glGetProgramiv(programId, GL_INFO_LOG_LENGTH, &logLen); + if (logLen > 0) + { + char* log = (char*) malloc(logLen * sizeof(char)); + // Show any errors as appropriate + glGetProgramInfoLog(programId, logLen, &logLen, log); + std::cout << "Prog Info Log: " << std::endl << log << std::endl; + free(log); + } + } + if (vtxShaderId) glDeleteShader(vtxShaderId); + if (fragShaderId) glDeleteShader(fragShaderId); + return programId; + } + + void init(const char* vshader, const char* fshader) + { + int filesize; + char *vshaderfile = mini::file::getfilebuffer(vshader, filesize, true); + + char *fshaderfile = nullptr; + if (fshader) { fshaderfile = mini::file::getfilebuffer(fshader, filesize, true); } + + SDL_GetWindowSize(video::window, &win_size.x, &win_size.y); + SDL_GetTextureSize(video::tex_shader, &tex_size.x, &tex_size.y); + + SDL_PropertiesID props = SDL_GetTextureProperties(video::tex_shader); + int access = SDL_GetNumberProperty(props, SDL_PROP_TEXTURE_ACCESS_NUMBER, -1); + if (access != SDL_TEXTUREACCESS_TARGET) { + std::cout << "ERROR FATAL: La textura per al render ha de tindre SDL_TEXTUREACCESS_TARGET definit." << std::endl; + ::exit(1); + } + const char * renderer_name = SDL_GetRendererName(backend::video::renderer); + if(!strncmp(renderer_name, "opengl", 6)) { + #ifndef __APPLE__ + static bool gl_extensions_initialized = false; + if (!gl_extensions_initialized) { + if (!initGLExtensions()) { + std::cout << "WARNING: No s'han pogut inicialitzar les extensions d'OpenGL!" << std::endl; + can_use_opengl = false; + return; + } + gl_extensions_initialized = true; + } + #endif + // Compilar el shader y dejarlo listo para usar. + if (!vshaderfile) { + can_use_opengl = false; + return; + } + programId = compileProgram(vshaderfile, fshaderfile); + } else { + std::cout << "WARNING: El driver del renderer no es OpenGL." << std::endl; + can_use_opengl = false; + return; + } + can_use_opengl = true; + return; + } + + void enable() { if (can_use_opengl) using_opengl = true; } + void disable() { using_opengl = false; } + + void render() + { + SDL_FlushRenderer(backend::video::renderer); + SDL_SetRenderTarget(backend::video::renderer, NULL); + SDL_SetRenderDrawColor(backend::video::renderer, 0, 0, 0, 255); + SDL_RenderClear(backend::video::renderer); + SDL_FlushRenderer(backend::video::renderer); + + if (using_opengl) + { + GLint oldProgramId; + if (programId != 0) + { + glGetIntegerv(GL_CURRENT_PROGRAM, &oldProgramId); + glUseProgram(programId); + } + + glEnable(GL_TEXTURE_2D); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, 1); + glViewport(0, 0, win_size.x, win_size.y); + + glBegin(GL_TRIANGLE_STRIP); + glTexCoord2f(0.0f, 0.0f); + glVertex2f(-1.0f, -1.0f); + glTexCoord2f(tex_size.x, 0.0f); + glVertex2f(1.0f, -1.0f); + glTexCoord2f(0.0f, tex_size.y); + glVertex2f(-1.0f, 1.0f); + glTexCoord2f(tex_size.x, tex_size.y); + glVertex2f(1.0f, 1.0f); + glEnd(); + + SDL_GL_SwapWindow(backend::video::window); + + if (programId != 0) glUseProgram(oldProgramId); + + } else { + SDL_RenderTexture(backend::video::renderer, backend::video::tex_shader, NULL, NULL); + SDL_RenderPresent(backend::video::renderer); + } + if (glGetError()) { printf("GLERROR!\n"); ::exit(1); } + } + + } +} + +#endif \ No newline at end of file diff --git a/source/backends/SDL3/video.cpp b/source/backends/SDL3/video.cpp index cfde82a..c8fc78d 100644 --- a/source/backends/SDL3/video.cpp +++ b/source/backends/SDL3/video.cpp @@ -43,11 +43,6 @@ namespace backend // Crear textura shaders i inicialitzar shaders tex_shader = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, width*zoom, height*zoom); SDL_SetTextureScaleMode(tex_shader, SDL_SCALEMODE_NEAREST); - - mini::shader::init(window, tex_shader, nullptr); - - // [TODO] - //log_msg(LOG_OK, "Graphics subsystem initialized\n"); } void quit() { @@ -72,7 +67,7 @@ namespace backend SDL_UnlockTexture(tex_back); SDL_RenderTexture(renderer, tex_back, NULL, NULL); //NEW - mini::shader::render(); + backend::shader::render(); //SDL_RenderTexture(mini_ren, mini_bak, NULL, NULL); //SDL_RenderPresent(mini_ren); diff --git a/source/backends/backend.h b/source/backends/backend.h index fc9d3c7..10c323b 100644 --- a/source/backends/backend.h +++ b/source/backends/backend.h @@ -33,6 +33,14 @@ namespace backend void cursor(const bool value); } + namespace shader + { + void init(const char* vshader, const char* fshader); + void enable(); + void disable(); + void render(); + } + namespace input { void reset(); diff --git a/source/mini/shader/shader.cpp b/source/mini/shader/shader.cpp index 1af8772..c588b97 100644 --- a/source/mini/shader/shader.cpp +++ b/source/mini/shader/shader.cpp @@ -1,268 +1,20 @@ #include "shader.h" -#include "mini/file/file.h" -#include "mini/win/win.h" - -#include - -#include - -#ifdef __APPLE__ - #include "CoreFoundation/CoreFoundation.h" - #include - - #if ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 - #include - #else - #include - #endif //!ESSENTIAL_GL_PRACTICES_SUPPORT_GL3 -#else - #include - #include -#endif +#include "backends/backend.h" namespace mini { namespace shader { - SDL_Window *win = nullptr; - SDL_Renderer *renderer = nullptr; - GLuint programId = 0; - SDL_Texture* backBuffer = nullptr; - SDL_Point win_size = {640, 480}; - SDL_FPoint tex_size = {320, 240}; - bool can_use_opengl = false; - bool using_opengl = false; - GLuint texture_number; - GLuint nose; - - #ifndef __APPLE__ - - // I'm avoiding the use of GLEW or some extensions handler, but that - // doesn't mean you should... - PFNGLCREATESHADERPROC glCreateShader; - PFNGLSHADERSOURCEPROC glShaderSource; - PFNGLCOMPILESHADERPROC glCompileShader; - PFNGLGETSHADERIVPROC glGetShaderiv; - PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; - PFNGLDELETESHADERPROC glDeleteShader; - PFNGLATTACHSHADERPROC glAttachShader; - PFNGLCREATEPROGRAMPROC glCreateProgram; - PFNGLDELETEPROGRAMPROC glDeleteProgram; - PFNGLLINKPROGRAMPROC glLinkProgram; - PFNGLVALIDATEPROGRAMPROC glValidateProgram; - PFNGLGETPROGRAMIVPROC glGetProgramiv; - PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; - PFNGLUSEPROGRAMPROC glUseProgram; - PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; - PFNGLACTIVETEXTUREPROC glActiveTexture; - - - bool initGLExtensions() { - glCreateShader = (PFNGLCREATESHADERPROC)SDL_GL_GetProcAddress("glCreateShader"); - glShaderSource = (PFNGLSHADERSOURCEPROC)SDL_GL_GetProcAddress("glShaderSource"); - glCompileShader = (PFNGLCOMPILESHADERPROC)SDL_GL_GetProcAddress("glCompileShader"); - glGetShaderiv = (PFNGLGETSHADERIVPROC)SDL_GL_GetProcAddress("glGetShaderiv"); - glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)SDL_GL_GetProcAddress("glGetShaderInfoLog"); - glDeleteShader = (PFNGLDELETESHADERPROC)SDL_GL_GetProcAddress("glDeleteShader"); - glAttachShader = (PFNGLATTACHSHADERPROC)SDL_GL_GetProcAddress("glAttachShader"); - glCreateProgram = (PFNGLCREATEPROGRAMPROC)SDL_GL_GetProcAddress("glCreateProgram"); - glDeleteProgram = (PFNGLDELETEPROGRAMPROC)SDL_GL_GetProcAddress("glDeleteProgram"); - glLinkProgram = (PFNGLLINKPROGRAMPROC)SDL_GL_GetProcAddress("glLinkProgram"); - glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)SDL_GL_GetProcAddress("glValidateProgram"); - glGetProgramiv = (PFNGLGETPROGRAMIVPROC)SDL_GL_GetProcAddress("glGetProgramiv"); - glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)SDL_GL_GetProcAddress("glGetProgramInfoLog"); - glUseProgram = (PFNGLUSEPROGRAMPROC)SDL_GL_GetProcAddress("glUseProgram"); - glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)SDL_GL_GetProcAddress("glGetUniformLocation"); - glActiveTexture = (PFNGLACTIVETEXTUREPROC)SDL_GL_GetProcAddress("glActiveTexture"); - - return glCreateShader && glShaderSource && glCompileShader && glGetShaderiv && - glGetShaderInfoLog && glDeleteShader && glAttachShader && glCreateProgram && - glDeleteProgram && glLinkProgram && glValidateProgram && glGetProgramiv && - glGetProgramInfoLog && glUseProgram && glGetUniformLocation; - } - - #endif - - state_t state; - - void init(const char* vshader, const char* fshader) - { - // [TODO] - //int filesize; - //char *vshaderfile = file::getfilebuffer(vshader, filesize, true); - // - //char *fshaderfile = nullptr; - //if (fshader) { fshaderfile = file::getfilebuffer(fshader, filesize, true); } - //init(win::state.window, win::state.tex_shader, vshaderfile, fshaderfile); + void init(const char* vshader, const char* fshader) { + backend::shader::init(vshader, fshader); } - - GLuint compileShader(const char* source, GLuint shaderType) { - // Create ID for shader - GLuint result = glCreateShader(shaderType); - // Add define depending on shader type - const char *sources[2] = { shaderType==GL_VERTEX_SHADER?"#define VERTEX\n":"#define FRAGMENT\n", source }; - // Define shader text - glShaderSource(result, 2, sources, NULL); - // Compile shader - glCompileShader(result); - - //Check vertex shader for errors - GLint shaderCompiled = GL_FALSE; - glGetShaderiv( result, GL_COMPILE_STATUS, &shaderCompiled ); - if (shaderCompiled != GL_TRUE) - { - std::cout << "Error en la compilación: " << result << "!" << std::endl; - GLint logLength; - glGetShaderiv(result, GL_INFO_LOG_LENGTH, &logLength); - if (logLength > 0) - { - GLchar *log = (GLchar*)malloc(logLength); - glGetShaderInfoLog(result, logLength, &logLength, log); - std::cout << "Shader compile log:" << log << std::endl; - //std::cout << source << std::endl; - free(log); - } - glDeleteShader(result); - result = 0; - } - return result; + void enable() { + backend::shader::enable(); } - GLuint compileProgram(const char* vertexShaderSource, const char* fragmentShaderSource) - { - GLuint programId = 0; - GLuint vtxShaderId, fragShaderId; - - if (programId != 0) glDeleteProgram(programId); - programId = glCreateProgram(); - - - vtxShaderId = compileShader(vertexShaderSource, GL_VERTEX_SHADER); - fragShaderId = compileShader(fragmentShaderSource?fragmentShaderSource:vertexShaderSource, GL_FRAGMENT_SHADER); - - if(vtxShaderId && fragShaderId) - { - // Associate shader with program - glAttachShader(programId, vtxShaderId); - glAttachShader(programId, fragShaderId); - glLinkProgram(programId); - glValidateProgram(programId); - - // Check the status of the compile/link - GLint logLen; - glGetProgramiv(programId, GL_INFO_LOG_LENGTH, &logLen); - if (logLen > 0) - { - char* log = (char*) malloc(logLen * sizeof(char)); - // Show any errors as appropriate - glGetProgramInfoLog(programId, logLen, &logLen, log); - std::cout << "Prog Info Log: " << std::endl << log << std::endl; - free(log); - } - } - if (vtxShaderId) glDeleteShader(vtxShaderId); - if (fragShaderId) glDeleteShader(fragShaderId); - return programId; + void disable() { + backend::shader::disable(); } - - const bool init(SDL_Window* win, SDL_Texture* backBuffer, const char* vertexShader, const char* fragmentShader) - { - shader::win = win; - shader::renderer = SDL_GetRenderer(win); - shader::backBuffer = backBuffer; - SDL_GetWindowSize(win, &win_size.x, &win_size.y); - SDL_GetTextureSize(backBuffer, &tex_size.x, &tex_size.y); - //printf("tex size: %fx%f\n", tex_size.x, tex_size.y); - SDL_PropertiesID props = SDL_GetTextureProperties(backBuffer); - texture_number = SDL_GetNumberProperty(props, SDL_PROP_TEXTURE_OPENGL_TEXTURE_NUMBER, -1); - //printf("texture number: %i\n", texture_number); - int access = SDL_GetNumberProperty(props, SDL_PROP_TEXTURE_ACCESS_NUMBER, -1); - nose = SDL_GetNumberProperty(props, SDL_PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER, -1); - //printf("texture target number: %i\n", nose); - - if (access != SDL_TEXTUREACCESS_TARGET) - { - std::cout << "ERROR FATAL: La textura per al render ha de tindre SDL_TEXTUREACCESS_TARGET definit." << std::endl; - exit(1); - } - - const char * renderer_name = SDL_GetRendererName(renderer); - //printf("rendererInfo.name: %s\n", renderer_name); - - if(!strncmp(renderer_name, "opengl", 6)) { - #ifndef __APPLE__ - static bool gl_extensions_initialized = false; - if (!gl_extensions_initialized) { - if (!initGLExtensions()) { - std::cout << "WARNING: No s'han pogut inicialitzar les extensions d'OpenGL!" << std::endl; - can_use_opengl = false; - return false; - } - gl_extensions_initialized = true; - } - #endif - // Compilar el shader y dejarlo listo para usar. - if (!vertexShader) { - can_use_opengl = false; - return false; - } - programId = compileProgram(vertexShader, fragmentShader); - } else { - std::cout << "WARNING: El driver del renderer no es OpenGL." << std::endl; - can_use_opengl = false; - return false; - } - can_use_opengl = true; - return true; - } - - void enable() { if (can_use_opengl) using_opengl = true; } - void disable() { using_opengl = false; } - - void render() - { - SDL_FlushRenderer(renderer); - SDL_SetRenderTarget(renderer, NULL); - SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); - SDL_RenderClear(renderer); - SDL_FlushRenderer(renderer); - - if (using_opengl) - { - GLint oldProgramId; - if (programId != 0) - { - glGetIntegerv(GL_CURRENT_PROGRAM, &oldProgramId); - glUseProgram(programId); - } - - glEnable(GL_TEXTURE_2D); - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, 1); - glViewport(0, 0, win_size.x, win_size.y); - - glBegin(GL_TRIANGLE_STRIP); - glTexCoord2f(0.0f, 0.0f); - glVertex2f(-1.0f, -1.0f); - glTexCoord2f(tex_size.x, 0.0f); - glVertex2f(1.0f, -1.0f); - glTexCoord2f(0.0f, tex_size.y); - glVertex2f(-1.0f, 1.0f); - glTexCoord2f(tex_size.x, tex_size.y); - glVertex2f(1.0f, 1.0f); - glEnd(); - - SDL_GL_SwapWindow(win); - - if (programId != 0) glUseProgram(oldProgramId); - - } else { - SDL_RenderTexture(renderer, backBuffer, NULL, NULL); - SDL_RenderPresent(renderer); - } - if (glGetError()) { printf("GLERROR!\n"); exit(1); } - } - } } diff --git a/source/mini/shader/shader.h b/source/mini/shader/shader.h index 2453de9..c6f673e 100644 --- a/source/mini/shader/shader.h +++ b/source/mini/shader/shader.h @@ -1,27 +1,13 @@ #pragma once #include -struct SDL_Window; -struct SDL_Texture; - namespace mini { namespace shader { - struct state_t { - const bool *keys; - uint8_t just_pressed = 0; - char text_input_buffer[10]; - bool has_text_input = false; - }; - extern state_t state; - - const bool init(SDL_Window* win, SDL_Texture* backBuffer, const char* vertexShader, const char* fragmentShader=nullptr); void init(const char* vshader, const char* fshader); void enable(); void disable(); - - void render(); } } diff --git a/source/mini/version.h b/source/mini/version.h index 4a8368a..9cdd1c5 100644 --- a/source/mini/version.h +++ b/source/mini/version.h @@ -1,3 +1,3 @@ #pragma once -#define MINI_VERSION "1.5.9" +#define MINI_VERSION "1.5.10"