49 lines
1.8 KiB
C++
49 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include <SDL3/SDL.h>
|
|
|
|
// TIPS:
|
|
// =======================================================================
|
|
// Abans de crear el renderer, cridar a la següent funció:
|
|
//
|
|
// SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl");
|
|
//
|
|
// Aixó li diu que volem un renderer que use especificament opengl. A més,
|
|
// al crear el renderer li tenim que dir que el volem que use acceeració
|
|
// per hardware, i que soporte render a textura. Per exemple:
|
|
//
|
|
// SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED |
|
|
// SDL_RENDERER_TARGETTEXTURE);
|
|
//
|
|
// Per altra part, al crear la textura tenim que definir que puga ser target
|
|
// de renderitzat (SDL_TEXTUREACCESS_TARGET), per exemple:
|
|
//
|
|
// SDL_Texture *tex = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888,
|
|
// SDL_TEXTUREACCESS_TARGET, 320, 240);
|
|
//
|
|
// Els shaders li'ls passem com una cadena, som nosaltres els que s'encarreguem
|
|
// de carregarlos de disc, amb fopen, ifstream, jfile o el que vullgues.
|
|
// Si els tens en un std::string, passa-li-la com "cadena.c_str()".
|
|
//
|
|
// Poden ser els dos el mateix arxiu, com fa libRetro, jo desde dins ja fique
|
|
// els defines necessaris. Si es el mateix arxiu, pots no ficar el quart paràmetre.
|
|
//
|
|
// Els shaders de libRetro no funcionen directament, hi ha que fer algunes modificacions.
|
|
//
|
|
// El pintat final de la teua escena l'has de fer com si "backBuffer" fora la pantalla.
|
|
//
|
|
// Ah! una cosa mes: al compilar, en Linux afegir "-lGL", en Windows afegir "-lopengl32".
|
|
// En Mac ni idea
|
|
|
|
namespace shader
|
|
{
|
|
const bool init(SDL_Window* win, SDL_Texture* backBuffer,
|
|
const char* vertexShader, const char* fragmentShader=nullptr);
|
|
|
|
void setAspectRatio(const float ratio);
|
|
void enable();
|
|
void disable();
|
|
|
|
void render();
|
|
}
|