vulkan游戏引擎renderer

06-02 1100阅读

1.renderer_frontend.h

#pragma once

#include "renderer_types.inl"

struct static_mesh_data;

struct platform_state;

b8 renderer_initialize(const char* application_name,struct platform_state* plat_state);

void renderer_shutdown();

void renderer_on_resized(u16 width,u16 height);

b8 renderer_draw_frame(render_packet* packet);

KAPI void renderer_set_view(mat4 view);

 void (*create_texture)(

        const char* name,

        b8 auto_release,

        i32 width,

        i32 height,

vulkan游戏引擎renderer
(图片来源网络,侵删)

        i32 channel_count,

        const u8* pixels,

vulkan游戏引擎renderer
(图片来源网络,侵删)

        b8 has_transparency,

        struct texture* out_texture

    );

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

2.renderer_frontend.c

#include "renderer_frontend.h"

#include "renderer_backend.h"

#include "core/logger.h"

#include "core/kmemory.h"

#include "math/kmath.h"

typedef struct renderer_system_state

{

    renderer_backend backend;

    mat4 projection;

    mat4 view;

    f32 near_clip;

    f32 far_clip;

}renderer_system_state;

 

static renderer_backend* backend = 0;

b8 renderer_initialize(const char* application_name, struct platform_state* plat_state)

{

    backend = kallocate(sizeof(renderer_backend),MEMORY_TAG_RENDERER);

 

        //MAKE THIS CONFIGURATION

        renderer_backend_create(RENDERER_BACKEND_TYPE_VULKAN,plat_state,backend);

        backend->frame_number = 0;

       if(!backend->initialize(backend,application_name,plat_state))

        {

           KFATAL("Renderer backend failed to initialize.Shutting down.");

           return false;

        }

    f32 near_clip = 0.1f;

    f32 far_clip = 1000.0f;

    return true;

}

void renderer_shutdown()

{

    backend->shutdown(backend);

    kfree(backend,sizeof(renderer_backend),MEMORY_TAG_RENDERER);

}

 

b8 renderer_begin_frame(f32 delta_time){

    return backend->begin_frame(backend,delta_time);

 

}

 

b8 renderer_end_frame(f32 delta_time)

{

    b8 result = backend->end_frame(backend,delta_time);

    backend->frame_number++;

    return result;

 

}

void renderer_on_resized(u16 width,u16 height)

{

    if(backend)

    {

        backend->resized(backend,width,height);

 

    }else

    {

 

        KWARN("renderer backend does not exit to accept resize: %i %i",width,height);

       

 

    }

 

}

 

b8 renderer_draw_frame(render_packet* packet)

{

    if(renderer_begin_frame(packet->delta_time))

    {

        mat4 projection = mat4_perspective(deg_to_rad(45.0f),1280/720.0f,0.1f,1000.0f);

        static f32 z = 0.0f;

        z += 0.01f;

        mat4 view = mat4_translation((vec3){0,0,z});

        view = mat4_inverse(view);

 

        backend->update_global_state(projection,view,vec3_zero(),vec4_one(),0);

        static f32 angle = 0.01f;

        angle += 0.001f;

       

        mat4 model = mat4_translation((vec3){0,0,0});

        quat rotation = quat_from_axis_angle(vec3_forward(),0.1f,false);

        quat_to_rotation_matrix(rotation,vec3_zero());

        backend->update_object(model);

        b8 result = renderer_end_frame(packet->delta_time);

        if(!result)

        {

            KERROR("renderer_end_frame failed.Application shutting down...");

            return false;

        }

 

    }

    return true;

 

}

void renderer_set_view(mat4 view)

{

    view = view;

 

}

 void render_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

    )

    {

        backend->create_texture(name,auto_release,width,height,channel_count,pixels,has_transparency,out_texture);

 

    }

    void renderer_destroy_texture(struct texture* texture)

    {

        backend->destroy_texture(texture);

    }

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码