vulkan游戏引擎的renderer_types实现

发布于:2025-06-01 ⋅ 阅读:(23) ⋅ 点赞:(0)

1.renderer_types.inl

#pragma once

#include "defines.h"

#include "math/math_types.h"


 

typedef enum renderer_backend_type

{

    RENDERER_BACKEND_TYPE_VULKAN,

    RENDERER_BACKEND_TYPE_OPENGL,

    RENDERER_BACKEND_TYPE_DIRECTX

}renderer_backend_type;


 

typedef struct global_uniform_object {

    // Projection matrix for transforming 3D space to clip space

    mat4 projection;

    // View matrix for transforming world space to camera space

    mat4 view;

    // Reserved matrix, can be used for future expansion

    mat4 m_reserved0;

    // Reserved matrix, can be used for future expansion

    mat4 m_reserved1;

} global_uniform_object;




 

typedef struct renderer_backend{

    struct platform_state* plat_state;

    u64 frame_number;

    b8 (*initialize)(struct renderer_backend* backend,const char* application_name,struct platform_state* plat_state);

    void (*shutdown)(struct renderer_backend* backend);


 

    void (*resized)(struct renderer_backend* backend,u16 width,u16 height);

    b8 (*begin_frame)(struct renderer_backend* backend,f32 delta_time);

    void (*update_global_state)(mat4 projection,mat4 view,vec3 view_position,vec4 ambient_colour,i32 mode);

    b8 (*end_frame)(struct renderer_backend* backend,f32 delta_time);

    void (*update_object)(mat4 model);

    void (*create_texture)(

        const char* name,

        b8 auto_release,

        i32 width,

        i32 height,

        i32 channel_count,

        const u8* pixels,

        b8 has_transparency,

        struct texture* out_texture

    );

    void (*destroy_texture)( struct texture* texture);


 

}renderer_backend;

typedef struct render_packet{

    f32 delta_time;


 

}render_packet;


网站公告

今日签到

点亮在社区的每一天
去签到