split RenderCommand/TextureCommand from GPUCmdBuffer

This commit is contained in:
2020-10-28 12:30:44 +08:00
parent 672a14e656
commit 2e05e06b3f
18 changed files with 127 additions and 166 deletions

View File

@@ -1,5 +1,7 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/common)
SET(VULKAN_APP_FRAMEWORK ${CMAKE_CURRENT_SOURCE_DIR}/common/VulkanAppFramework.h)
add_subdirectory(Vulkan)
add_subdirectory(2dVector)
add_subdirectory(GUI)
add_subdirectory(GUI)

View File

@@ -1,5 +1,5 @@
macro(CreateProject name)
add_executable(${name} ${ARGN})
add_executable(${name} ${ARGN} ${VULKAN_APP_FRAMEWORK})
target_link_libraries(${name} ${ULRE})
IF(WIN32)

View File

@@ -53,7 +53,7 @@ private:
struct
{
RenderTarget *rt;
GPUCmdBuffer *cmd;
RenderCommand *cmd;
public:
@@ -116,7 +116,7 @@ private:
if(!gbuffer.rt)return(false);
gbuffer.cmd=device->CreateCommandBuffer(size_t(GBufferAttachment::RANGE_SIZE)+1);
gbuffer.cmd=device->CreateRenderCommandBuffer();
return(gbuffer.rt);
}
@@ -298,7 +298,10 @@ private:
if(!gbuffer.cmd->BindFramebuffer(gbuffer.rt->GetRenderPass(),gbuffer.rt->GetFramebuffer()))
return(false);
render_list.Render(gbuffer.cmd);
if(!gbuffer.cmd->BeginRenderpass())
return(false);
render_list.Render(gbuffer.cmd);
gbuffer.cmd->EndRenderPass();
gbuffer.cmd->End();

View File

@@ -66,19 +66,6 @@ private:
render_root.Add(ri,mat);
}
bool InitScene()
{
Add(ro_round_rectangle,m2d);
Add(ro_plane_grid[0],m3d);
Add(ro_plane_grid[1],m3d,rotate(HGL_RAD_90,0,1,0));
Add(ro_plane_grid[2],m3d,rotate(HGL_RAD_90,1,0,0));
render_root.RefreshMatrix();
render_root.ExpendToList(&render_list);
return(true);
}
void CreateRenderObject()
{
struct PlaneGridCreateInfo pgci;
@@ -121,6 +108,19 @@ private:
camera.eye.Set(200,200,200,1.0);
}
bool InitScene()
{
Add(ro_round_rectangle,m2d);
Add(ro_plane_grid[0],m3d);
Add(ro_plane_grid[1],m3d,rotate(HGL_RAD_90,0,1,0));
Add(ro_plane_grid[2],m3d,rotate(HGL_RAD_90,1,0,0));
render_root.RefreshMatrix();
render_root.ExpendToList(&render_list);
return(true);
}
public:
bool Init()

View File

@@ -22,7 +22,7 @@ class TestApp:public CameraAppFramework
struct:public RenderObject
{
RenderTarget * render_taget =nullptr;
GPUCmdBuffer * command_buffer =nullptr;
RenderCommand * command_buffer =nullptr;
Pipeline * pipeline =nullptr;
RenderableInstance *renderable_instance =nullptr;
@@ -82,7 +82,7 @@ public:
os.render_taget=device->CreateRenderTarget(&fbi);
if(!os.render_taget)return(false);
os.command_buffer=device->CreateCommandBuffer(fbi.GetAttachmentCount());
os.command_buffer=device->CreateRenderCommandBuffer();
if(!os.command_buffer)return(false);
os.material_instance=db->CreateMaterialInstance(OS_TEXT("res/material/VertexColor2D"));

View File

@@ -53,7 +53,7 @@ protected:
int32_t swap_chain_count =0;
GPUCmdBuffer ** cmd_buf =nullptr;
RenderCommand ** cmd_buf =nullptr;
Color4f clear_color;
@@ -166,23 +166,23 @@ public:
{
const VkExtent2D extent=sc_render_target->GetExtent();
cmd_buf=hgl_zero_new<GPUCmdBuffer *>(swap_chain_count);
cmd_buf=hgl_zero_new<RenderCommand *>(swap_chain_count);
for(int32_t i=0;i<swap_chain_count;i++)
cmd_buf[i]=device->CreateCommandBuffer(2);
cmd_buf[i]=device->CreateRenderCommandBuffer();
}
}
bool BuildCommandBuffer(GPUCmdBuffer *cb,RenderPass *rp,Framebuffer *fb,RenderableInstance *ri)
bool BuildCommandBuffer(RenderCommand *cb,RenderPass *rp,Framebuffer *fb,RenderableInstance *ri)
{
if(!ri)return(false);
const IndexBuffer *ib=ri->GetIndexBuffer();
cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b);
cb->Begin();
cb->BindFramebuffer(rp,fb);
cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b);
cb->BeginRenderpass();
cb->BindPipeline(ri->GetPipeline());
cb->BindDescriptorSets(ri->GetDescriptorSets());
cb->BindVAB(ri);
@@ -198,7 +198,7 @@ public:
return(true);
}
void BuildCommandBuffer(GPUCmdBuffer *cb,RenderTarget *rt,RenderableInstance *ri)
void BuildCommandBuffer(RenderCommand *cb,RenderTarget *rt,RenderableInstance *ri)
{
if(!cb||!rt||!ri)
return;
@@ -234,14 +234,14 @@ public:
{
if(!rl)return;
GPUCmdBuffer *cb=cmd_buf[index];
cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b);
RenderCommand *cb=cmd_buf[index];
cb->Begin();
cb->BindFramebuffer(sc_render_target->GetRenderPass(),sc_render_target->GetFramebuffer(index));
rl->Render(cb);
cb->EndRenderPass();
cb->BindFramebuffer(sc_render_target->GetRenderPass(),sc_render_target->GetFramebuffer(index));
cb->SetClearColor(0,clear_color.r,clear_color.g,clear_color.b);
cb->BeginRenderpass();
rl->Render(cb);
cb->EndRenderPass();
cb->End();
}