CommandBuffer中独立BeginRenderPass/EndRenderPass
This commit is contained in:
parent
e96bfe9c4b
commit
e44a89af78
@ -31,8 +31,7 @@ CommandBuffer::~CommandBuffer()
|
|||||||
VkCommandBuffer cmd_bufs[1] = {cmd_buf};
|
VkCommandBuffer cmd_bufs[1] = {cmd_buf};
|
||||||
vkFreeCommandBuffers(device, pool, 1, cmd_bufs);
|
vkFreeCommandBuffers(device, pool, 1, cmd_bufs);
|
||||||
}
|
}
|
||||||
|
bool CommandBuffer::Begin()
|
||||||
bool CommandBuffer::Begin(RenderPass *rp,Framebuffer *fb)
|
|
||||||
{
|
{
|
||||||
VkCommandBufferBeginInfo cmd_buf_info = {};
|
VkCommandBufferBeginInfo cmd_buf_info = {};
|
||||||
cmd_buf_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_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)
|
if(vkBeginCommandBuffer(cmd_buf, &cmd_buf_info)!=VK_SUCCESS)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CommandBuffer::BeginRenderPass(RenderPass *rp,Framebuffer *fb)
|
||||||
|
{
|
||||||
VkRenderPassBeginInfo rp_begin;
|
VkRenderPassBeginInfo rp_begin;
|
||||||
|
|
||||||
rp_begin.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
|
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);
|
vkCmdDrawIndexed(cmd_buf,index_count,instance_count,first_index,vertex_offset,first_instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandBuffer::End()
|
void CommandBuffer::EndRenderPass()
|
||||||
{
|
{
|
||||||
vkCmdEndRenderPass(cmd_buf);
|
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
|
VK_NAMESPACE_END
|
||||||
|
@ -43,10 +43,12 @@ public:
|
|||||||
|
|
||||||
//以上设定在Begin开始后即不可改变
|
//以上设定在Begin开始后即不可改变
|
||||||
|
|
||||||
bool Begin(RenderPass *rp,Framebuffer *fb);
|
bool Begin();
|
||||||
|
bool BeginRenderPass(RenderPass *rp,Framebuffer *fb);
|
||||||
bool Bind(Pipeline *p);
|
bool Bind(Pipeline *p);
|
||||||
bool Bind(Material *);
|
bool Bind(Material *);
|
||||||
bool Bind(Renderable *);
|
bool Bind(Renderable *);
|
||||||
|
void EndRenderPass();
|
||||||
bool End();
|
bool End();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
using namespace hgl;
|
using namespace hgl;
|
||||||
using namespace hgl::graph;
|
using namespace hgl::graph;
|
||||||
|
|
||||||
constexpr uint32_t SCREEN_WIDTH=1280;
|
constexpr uint32_t SCREEN_WIDTH=128;
|
||||||
constexpr uint32_t SCREEN_HEIGHT=720;
|
constexpr uint32_t SCREEN_HEIGHT=128;
|
||||||
|
|
||||||
struct WorldConfig
|
struct WorldConfig
|
||||||
{
|
{
|
||||||
@ -199,11 +199,13 @@ private:
|
|||||||
if(!cmd_buf)
|
if(!cmd_buf)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
cmd_buf->Begin(device->GetRenderPass(),device->GetFramebuffer(0));
|
cmd_buf->Begin();
|
||||||
|
cmd_buf->BeginRenderPass(device->GetRenderPass(),device->GetFramebuffer(0));
|
||||||
cmd_buf->Bind(pipeline);
|
cmd_buf->Bind(pipeline);
|
||||||
cmd_buf->Bind(material);
|
cmd_buf->Bind(material);
|
||||||
cmd_buf->Bind(render_obj);
|
cmd_buf->Bind(render_obj);
|
||||||
cmd_buf->Draw(VERTEX_COUNT);
|
cmd_buf->Draw(VERTEX_COUNT);
|
||||||
|
cmd_buf->EndRenderPass();
|
||||||
cmd_buf->End();
|
cmd_buf->End();
|
||||||
|
|
||||||
return(true);
|
return(true);
|
||||||
|
@ -258,7 +258,7 @@ namespace hgl
|
|||||||
* @return 是否取得成功
|
* @return 是否取得成功
|
||||||
*/
|
*/
|
||||||
template<typename F,typename T,typename DataPair>
|
template<typename F,typename T,typename DataPair>
|
||||||
bool _Map<F,T,DataPair>::GetKey(int index,F &f) const
|
bool _Map<F,T,DataPair>::GetKey(int index,F &f)
|
||||||
{
|
{
|
||||||
if(index<0||index>=data_list.GetCount())return(false);
|
if(index<0||index>=data_list.GetCount())return(false);
|
||||||
|
|
||||||
@ -276,7 +276,7 @@ namespace hgl
|
|||||||
* @return 是否取得成功
|
* @return 是否取得成功
|
||||||
*/
|
*/
|
||||||
template<typename F,typename T,typename DataPair>
|
template<typename F,typename T,typename DataPair>
|
||||||
bool _Map<F,T,DataPair>::GetValue(int index,T &t) const
|
bool _Map<F,T,DataPair>::GetValue(int index,T &t)
|
||||||
{
|
{
|
||||||
if(index<0||index>=data_list.GetCount())return(false);
|
if(index<0||index>=data_list.GetCount())return(false);
|
||||||
|
|
||||||
@ -525,7 +525,7 @@ namespace hgl
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename F,typename T,typename DataPair>
|
template<typename F,typename T,typename DataPair>
|
||||||
void _Map<F,T,DataPair>::EnumKey(void (*enum_func)(const F &))const
|
void _Map<F,T,DataPair>::EnumKey(void (*enum_func)(const F &))
|
||||||
{
|
{
|
||||||
const int count=data_list.GetCount();
|
const int count=data_list.GetCount();
|
||||||
|
|
||||||
|
@ -93,17 +93,17 @@ namespace hgl
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
IDItem *GetItem(int n)const{return GetObject(data_list,n);} ///<取指定序号的数据
|
IDItem *GetItem(int n){return GetObject(data_list,n);} ///<取指定序号的数据
|
||||||
bool Get(int,F &,T &) const; ///<取指定序号的数据
|
bool Get(int,F &,T &) const; ///<取指定序号的数据
|
||||||
bool GetKey(int,F &)const; ///<取指定序号的索引
|
bool GetKey(int,F &); ///<取指定序号的索引
|
||||||
bool GetValue(int,T &)const; ///<取指定序号的数据
|
bool GetValue(int,T &); ///<取指定序号的数据
|
||||||
|
|
||||||
bool SetValueBySerial(int,T &); ///<根据序号设置数据
|
bool SetValueBySerial(int,T &); ///<根据序号设置数据
|
||||||
|
|
||||||
void operator=(const _Map<F,T,IDItem> &); ///<操作符重载,复制一个列表
|
void operator=(const _Map<F,T,IDItem> &); ///<操作符重载,复制一个列表
|
||||||
|
|
||||||
void Enum(void (*enum_func)(const F &,T)); ///<枚举所有数据项
|
void Enum(void (*enum_func)(const F &,T)); ///<枚举所有数据项
|
||||||
void EnumKey(void (*enum_func)(const F &))const; ///<枚举所有索引
|
void EnumKey(void (*enum_func)(const F &)); ///<枚举所有索引
|
||||||
void EnumValue(void (*enum_func)(T)); ///<枚举所有数值
|
void EnumValue(void (*enum_func)(T)); ///<枚举所有数值
|
||||||
|
|
||||||
void EnumValue(bool (*enum_func)(T)); ///<枚举所有数值
|
void EnumValue(bool (*enum_func)(T)); ///<枚举所有数值
|
||||||
|
Loading…
x
Reference in New Issue
Block a user