CommandBuffer中独立BeginRenderPass/EndRenderPass
This commit is contained in:
@@ -31,8 +31,7 @@ CommandBuffer::~CommandBuffer()
|
||||
VkCommandBuffer cmd_bufs[1] = {cmd_buf};
|
||||
vkFreeCommandBuffers(device, pool, 1, cmd_bufs);
|
||||
}
|
||||
|
||||
bool CommandBuffer::Begin(RenderPass *rp,Framebuffer *fb)
|
||||
bool CommandBuffer::Begin()
|
||||
{
|
||||
VkCommandBufferBeginInfo cmd_buf_info = {};
|
||||
cmd_buf_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||
@@ -43,6 +42,11 @@ bool CommandBuffer::Begin(RenderPass *rp,Framebuffer *fb)
|
||||
if(vkBeginCommandBuffer(cmd_buf, &cmd_buf_info)!=VK_SUCCESS)
|
||||
return(false);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool CommandBuffer::BeginRenderPass(RenderPass *rp,Framebuffer *fb)
|
||||
{
|
||||
VkRenderPassBeginInfo rp_begin;
|
||||
|
||||
rp_begin.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
|
||||
@@ -163,9 +167,16 @@ void CommandBuffer::DrawIndexed(const uint32_t index_count,const uint32_t instan
|
||||
vkCmdDrawIndexed(cmd_buf,index_count,instance_count,first_index,vertex_offset,first_instance);
|
||||
}
|
||||
|
||||
bool CommandBuffer::End()
|
||||
void CommandBuffer::EndRenderPass()
|
||||
{
|
||||
vkCmdEndRenderPass(cmd_buf);
|
||||
return(vkEndCommandBuffer(cmd_buf)==VK_SUCCESS);
|
||||
}
|
||||
|
||||
bool CommandBuffer::End()
|
||||
{
|
||||
if(vkEndCommandBuffer(cmd_buf)==VK_SUCCESS)
|
||||
return(true);
|
||||
|
||||
return(false);
|
||||
}
|
||||
VK_NAMESPACE_END
|
||||
|
@@ -43,10 +43,12 @@ public:
|
||||
|
||||
//以上设定在Begin开始后即不可改变
|
||||
|
||||
bool Begin(RenderPass *rp,Framebuffer *fb);
|
||||
bool Begin();
|
||||
bool BeginRenderPass(RenderPass *rp,Framebuffer *fb);
|
||||
bool Bind(Pipeline *p);
|
||||
bool Bind(Material *);
|
||||
bool Bind(Renderable *);
|
||||
void EndRenderPass();
|
||||
bool End();
|
||||
|
||||
public:
|
||||
|
@@ -19,8 +19,8 @@
|
||||
using namespace hgl;
|
||||
using namespace hgl::graph;
|
||||
|
||||
constexpr uint32_t SCREEN_WIDTH=1280;
|
||||
constexpr uint32_t SCREEN_HEIGHT=720;
|
||||
constexpr uint32_t SCREEN_WIDTH=128;
|
||||
constexpr uint32_t SCREEN_HEIGHT=128;
|
||||
|
||||
struct WorldConfig
|
||||
{
|
||||
@@ -199,11 +199,13 @@ private:
|
||||
if(!cmd_buf)
|
||||
return(false);
|
||||
|
||||
cmd_buf->Begin(device->GetRenderPass(),device->GetFramebuffer(0));
|
||||
cmd_buf->Bind(pipeline);
|
||||
cmd_buf->Bind(material);
|
||||
cmd_buf->Bind(render_obj);
|
||||
cmd_buf->Draw(VERTEX_COUNT);
|
||||
cmd_buf->Begin();
|
||||
cmd_buf->BeginRenderPass(device->GetRenderPass(),device->GetFramebuffer(0));
|
||||
cmd_buf->Bind(pipeline);
|
||||
cmd_buf->Bind(material);
|
||||
cmd_buf->Bind(render_obj);
|
||||
cmd_buf->Draw(VERTEX_COUNT);
|
||||
cmd_buf->EndRenderPass();
|
||||
cmd_buf->End();
|
||||
|
||||
return(true);
|
||||
|
Reference in New Issue
Block a user