- Engine core: improved initialization and lifecycle - Renderer: camera and rendering pipeline updates - Editor: updated editor code - Window: improved window handling - Demo/main.c: scene demo with AssetManager + scene loading - build.bat: updated build script - 11 files modified from user's manual edits
37 lines
1.4 KiB
C
37 lines
1.4 KiB
C
#pragma once
|
|
#include "graphics_device.h"
|
|
#include "shader.h"
|
|
#include "mesh.h"
|
|
#include "texture.h"
|
|
#include "camera.h"
|
|
#include "material.h"
|
|
#include "../include/engine_api.h"
|
|
#include "../ASM/math_c_fallback.h"
|
|
|
|
typedef struct Renderer Renderer;
|
|
struct Renderer {
|
|
GraphicsDevice* device;
|
|
Shader* current_shader;
|
|
Mat4 view;
|
|
Mat4 projection;
|
|
Vec3 light_dir;
|
|
Vec4 light_color;
|
|
Vec4 ambient_color;
|
|
float clear_color[4];
|
|
};
|
|
|
|
Renderer* renderer_create(GraphicsDevice* device);
|
|
void renderer_destroy(Renderer* renderer);
|
|
void renderer_begin_frame(Renderer* renderer);
|
|
void renderer_end_frame(Renderer* renderer);
|
|
void renderer_draw_mesh(Renderer* renderer, Mesh* mesh);
|
|
void renderer_draw_mesh_with_shader(Renderer* renderer, Mesh* mesh, Shader* shader, const Mat4* world, Texture* tex);
|
|
void renderer_draw_mesh_with_material(Renderer* renderer, Mesh* mesh, Material* material, const Mat4* world);
|
|
void renderer_set_view(Renderer* renderer, const Mat4* view);
|
|
void renderer_set_projection(Renderer* renderer, const Mat4* projection);
|
|
void renderer_set_light(Renderer* renderer, Vec3 dir, Vec4 color, Vec4 ambient);
|
|
void renderer_set_clear_color(Renderer* renderer, float r, float g, float b, float a);
|
|
GraphicsDevice* renderer_get_device(Renderer* renderer);
|
|
void renderer_resize(Renderer* renderer, int width, int height);
|
|
void renderer_get_view_projection(const Renderer* renderer, Mat4* out);
|