Files
shaders/main.cpp

44 lines
1.3 KiB
C++

#include <iostream>
#include <string>
#include <fstream>
#include <streambuf>
#include "jshader.h"
#include <SDL2/SDL.h>
#define WIDTH 384
#define HEIGHT 240
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *win = SDL_CreateWindow("Shaders i tal", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH*3, HEIGHT*3, 0);
SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl");
SDL_Renderer *renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE);
SDL_Texture *texTarget = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, WIDTH, HEIGHT);
std::ifstream f("crtpi.glsl");
std::string source((std::istreambuf_iterator<char>(f)), std::istreambuf_iterator<char>());
shader::init(win, texTarget, source.c_str());
// Carreguem una imatge pa ficar algo
SDL_Texture *bmpTex = SDL_CreateTextureFromSurface(renderer, SDL_LoadBMP("pang.bmp"));
bool should_exit = false;
while (!should_exit)
{
SDL_Event e;
while ( SDL_PollEvent(&e) ) {
if ( e.type == SDL_QUIT || ( e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_ESCAPE ) ) { should_exit = true; }
}
SDL_SetRenderTarget(renderer, texTarget);
SDL_RenderCopy(renderer, bmpTex, NULL, NULL);
shader::render();
}
SDL_Quit();
return 0;
}