- Llevat el tema dels shaders, que aci no fa falta
- Fent proves de visualització - Afegits un parell de bocetos
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
#include <SDL3/SDL.h>
|
||||
#include "gif.h"
|
||||
#include "file.h"
|
||||
#include "shader.h"
|
||||
//#include "shader.h"
|
||||
|
||||
namespace draw
|
||||
{
|
||||
@@ -14,7 +14,7 @@ namespace draw
|
||||
SDL_Window *sdl_window {nullptr}; // La finestra de SDL
|
||||
SDL_Renderer *sdl_renderer {nullptr}; // El renderer de SDL
|
||||
SDL_Texture *sdl_texture {nullptr}; // La textura de SDL a la que pintarem la nostra superficie "screen" i que despres volcarem a pantalla
|
||||
SDL_Texture *sdl_shadertex {nullptr}; // La textura de SDL per al shader
|
||||
//SDL_Texture *sdl_shadertex {nullptr}; // La textura de SDL per al shader
|
||||
|
||||
static int screen_zoom = 1;
|
||||
static bool screen_fullscreen = false;
|
||||
@@ -104,10 +104,10 @@ namespace draw
|
||||
exit(1);
|
||||
}
|
||||
|
||||
sdl_shadertex = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, window_width, window_height);
|
||||
SDL_SetTextureScaleMode(sdl_shadertex, SDL_SCALEMODE_NEAREST);
|
||||
// sdl_shadertex = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, window_width, window_height);
|
||||
// SDL_SetTextureScaleMode(sdl_shadertex, SDL_SCALEMODE_NEAREST);
|
||||
|
||||
loadShader();
|
||||
// loadShader();
|
||||
}
|
||||
|
||||
void destroyDisplay()
|
||||
@@ -235,50 +235,6 @@ namespace draw
|
||||
file::setConfigValueBool("fullscreen", screen_fullscreen);
|
||||
}
|
||||
|
||||
void loadShader()
|
||||
{
|
||||
char *buffer = nullptr;
|
||||
if (screen_shader) {
|
||||
int size;
|
||||
buffer = file::getFileBuffer(screen_shader, size, true);
|
||||
}
|
||||
shader::setAspectRatio(3.0f/4.0f);
|
||||
shader::init(sdl_window, sdl_shadertex, buffer);
|
||||
if (buffer) free(buffer);
|
||||
}
|
||||
|
||||
void setShader(const char* shader_file)
|
||||
{
|
||||
if (screen_shader) free(screen_shader);
|
||||
screen_shader = (char*)malloc(strlen(shader_file)+1);
|
||||
strcpy(screen_shader, shader_file);
|
||||
loadShader();
|
||||
if (file::getConfigValueBool("shader_enabled", false)) enableShader();
|
||||
}
|
||||
|
||||
void enableShader()
|
||||
{
|
||||
shader_enabled = true;
|
||||
shader::enable();
|
||||
//destroyDisplay();
|
||||
//createDisplay();
|
||||
file::setConfigValueBool("shader_enabled", shader_enabled);
|
||||
}
|
||||
|
||||
void disableShader()
|
||||
{
|
||||
shader_enabled = false;
|
||||
shader::disable();
|
||||
//destroyDisplay();
|
||||
//createDisplay();
|
||||
file::setConfigValueBool("shader_enabled", shader_enabled);
|
||||
}
|
||||
|
||||
void toggleShader()
|
||||
{
|
||||
shader_enabled ? disableShader() : enableShader();
|
||||
}
|
||||
|
||||
void hideCursor()
|
||||
{
|
||||
screen_cursor = false;
|
||||
@@ -719,13 +675,12 @@ namespace draw
|
||||
// Desbloquejem la textura
|
||||
SDL_UnlockTexture(sdl_texture);
|
||||
|
||||
SDL_SetRenderTarget(sdl_renderer, sdl_shadertex);
|
||||
SDL_SetRenderTarget(sdl_renderer, nullptr);
|
||||
// Pintem la textura a pantalla
|
||||
SDL_RenderTexture(sdl_renderer, sdl_texture, NULL, NULL);
|
||||
|
||||
// I ho presentem
|
||||
shader::render();
|
||||
//SDL_RenderPresent(sdl_renderer);
|
||||
SDL_RenderPresent(sdl_renderer);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user