Nimbin2git.christianimmanuel.de / Games / strichmaennchen / renderer.h

strichmaennchen git · main

git clone https://git.christianimmanuel.de/games/strichmaennchen.gitwget https://git.christianimmanuel.de/games/strichmaennchen/archive/strichmaennchen.tar.gz
renderer.h 1 KB · 45 lines raw
#ifndef RENDERER_H
#define RENDERER_H

#include <stdbool.h>
#include <SDL3/SDL.h>
#include "linalg.h"
#include "camera.h"
#include "mesh.h"

typedef struct Renderer {
    SDL_Window *window;
    SDL_GLContext gl_context;
    int width;
    int height;

    GLuint shaderProgram;
    GLuint shadowShader;  // Added for shadow mapping

    GLuint cubeVAO;
    GLuint cubeVBO;
    GLuint cubeEBO;

    const char *vertexShaderSrc;
    const char *fragmentShaderSrc;

    GLuint shadowFramebuffer;
    GLuint shadowMap;  // Depth texture
    int shadowMapWidth;
    int shadowMapHeight;
    Mat4 lightProjection;  // Ortho matrix for light
    Mat4 lightView;        // View matrix from light's perspective
} Renderer;

Renderer* Renderer_create(int width, int height);
bool Renderer_init(Renderer* renderer, int width, int height);
void Renderer_resize(Renderer* renderer);
void Renderer_clear(float r, float g, float b, float a);


void Renderer_shutdown(Renderer* renderer);


void Renderer_drawMesh(Renderer* renderer, Mesh* mesh, Mat4 mvp);

#endif