测试多个CommandBuffer
This commit is contained in:
parent
4c7ffda1aa
commit
be0d2dcd2c
@ -4,8 +4,8 @@
|
|||||||
using namespace hgl;
|
using namespace hgl;
|
||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
|
|
||||||
constexpr uint32_t SCREEN_WIDTH=128;
|
constexpr uint32_t SCREEN_WIDTH=1280;
|
||||||
constexpr uint32_t SCREEN_HEIGHT=128;
|
constexpr uint32_t SCREEN_HEIGHT=720;
|
||||||
|
|
||||||
struct WorldConfig
|
struct WorldConfig
|
||||||
{
|
{
|
||||||
@ -29,7 +29,9 @@ constexpr float color_data[VERTEX_COUNT][3]=
|
|||||||
|
|
||||||
class TestApp:public VulkanApplicationFramework
|
class TestApp:public VulkanApplicationFramework
|
||||||
{
|
{
|
||||||
private: //需释放数据
|
private:
|
||||||
|
|
||||||
|
uint swap_chain_count=0;
|
||||||
|
|
||||||
vulkan::Material * material =nullptr;
|
vulkan::Material * material =nullptr;
|
||||||
vulkan::Renderable * render_obj =nullptr;
|
vulkan::Renderable * render_obj =nullptr;
|
||||||
@ -37,7 +39,7 @@ private: //需释放数据
|
|||||||
|
|
||||||
vulkan::PipelineCreater * pipeline_creater =nullptr;
|
vulkan::PipelineCreater * pipeline_creater =nullptr;
|
||||||
vulkan::Pipeline * pipeline =nullptr;
|
vulkan::Pipeline * pipeline =nullptr;
|
||||||
vulkan::CommandBuffer * cmd_buf =nullptr;
|
vulkan::CommandBuffer ** cmd_buf =nullptr;
|
||||||
|
|
||||||
vulkan::VertexBuffer * vertex_buffer =nullptr;
|
vulkan::VertexBuffer * vertex_buffer =nullptr;
|
||||||
vulkan::VertexBuffer * color_buffer =nullptr;
|
vulkan::VertexBuffer * color_buffer =nullptr;
|
||||||
@ -48,7 +50,7 @@ public:
|
|||||||
{
|
{
|
||||||
SAFE_CLEAR(color_buffer);
|
SAFE_CLEAR(color_buffer);
|
||||||
SAFE_CLEAR(vertex_buffer);
|
SAFE_CLEAR(vertex_buffer);
|
||||||
SAFE_CLEAR(cmd_buf);
|
SAFE_CLEAR_OBJECT_ARRAY(cmd_buf,swap_chain_count);
|
||||||
SAFE_CLEAR(pipeline);
|
SAFE_CLEAR(pipeline);
|
||||||
SAFE_CLEAR(pipeline_creater);
|
SAFE_CLEAR(pipeline_creater);
|
||||||
SAFE_CLEAR(ubo_mvp);
|
SAFE_CLEAR(ubo_mvp);
|
||||||
@ -107,19 +109,24 @@ private:
|
|||||||
|
|
||||||
bool InitCommandBuffer()
|
bool InitCommandBuffer()
|
||||||
{
|
{
|
||||||
cmd_buf=device->CreateCommandBuffer();
|
cmd_buf=hgl_zero_new<vulkan::CommandBuffer *>(swap_chain_count);
|
||||||
|
|
||||||
if(!cmd_buf)
|
for(uint i=0;i<swap_chain_count;i++)
|
||||||
return(false);
|
{
|
||||||
|
cmd_buf[i]=device->CreateCommandBuffer();
|
||||||
|
|
||||||
cmd_buf->Begin();
|
if(!cmd_buf[i])
|
||||||
cmd_buf->BeginRenderPass(device->GetRenderPass(),device->GetFramebuffer(0));
|
return(false);
|
||||||
cmd_buf->Bind(pipeline);
|
|
||||||
cmd_buf->Bind(material);
|
cmd_buf[i]->Begin();
|
||||||
cmd_buf->Bind(render_obj);
|
cmd_buf[i]->BeginRenderPass(device->GetRenderPass(),device->GetFramebuffer(i));
|
||||||
cmd_buf->Draw(VERTEX_COUNT);
|
cmd_buf[i]->Bind(pipeline);
|
||||||
cmd_buf->EndRenderPass();
|
cmd_buf[i]->Bind(material);
|
||||||
cmd_buf->End();
|
cmd_buf[i]->Bind(render_obj);
|
||||||
|
cmd_buf[i]->Draw(VERTEX_COUNT);
|
||||||
|
cmd_buf[i]->EndRenderPass();
|
||||||
|
cmd_buf[i]->End();
|
||||||
|
}
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
@ -131,6 +138,8 @@ public:
|
|||||||
if(!VulkanApplicationFramework::Init(SCREEN_WIDTH,SCREEN_HEIGHT))
|
if(!VulkanApplicationFramework::Init(SCREEN_WIDTH,SCREEN_HEIGHT))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
swap_chain_count=device->GetSwapChainImageCount();
|
||||||
|
|
||||||
if(!InitMaterial())
|
if(!InitMaterial())
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
@ -150,7 +159,8 @@ public:
|
|||||||
|
|
||||||
void Draw()
|
void Draw()
|
||||||
{
|
{
|
||||||
Submit(cmd_buf);
|
AcquireNextFrame();
|
||||||
|
Submit(cmd_buf[device->GetCurrentFrameIndices()]);
|
||||||
}
|
}
|
||||||
};//class TestApp:public VulkanApplicationFramework
|
};//class TestApp:public VulkanApplicationFramework
|
||||||
|
|
||||||
@ -166,10 +176,8 @@ int main(int,char **)
|
|||||||
if(!app.Init())
|
if(!app.Init())
|
||||||
return(-1);
|
return(-1);
|
||||||
|
|
||||||
app.AcquireNextFrame();
|
while(app.Run())
|
||||||
app.Draw();
|
app.Draw();
|
||||||
|
|
||||||
while(app.Run());
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user