SpiecsEngine
 
Loading...
Searching...
No Matches

◆ UpdatePushConstantAsync() [1/2]

template<typename T , typename F >
void Spices::Renderer::RenderBehaveBuilder::UpdatePushConstantAsync ( F func)
inline

Update local push constant buffer Async.

Template Parameters
TSpecific push constant struct Type.
Parameters
[in]funcA function pointer, which defines what data inside the buffer.

@breif Create pushconstant object.

@breif Write in data

Parameters
[in]pushpushconstant object.

@breif Update PushConstants

Definition at line 2503 of file Renderer.h.

2504 {
2506
2510 T push{};
2511
2516 func(push);
2517
2518 std::stringstream ss;
2519 ss << m_Renderer->m_RendererName << "." << m_HandledSubPass->GetName() << ".Default";
2520
2524 m_Renderer->SubmitCmdsParallel(m_CommandBuffer, m_SubPassIndex, [&](const VkCommandBuffer& cmdBuffer) {
2525 vkCmdPushConstants(
2526 cmdBuffer,
2527 m_Renderer->m_Pipelines[ss.str()]->GetPipelineLayout(),
2528 VK_SHADER_STAGE_ALL,
2529 0,
2530 sizeof(T),
2531 &push
2532 );
2533 });
2534 }
#define SPICES_PROFILE_ZONE
std::shared_ptr< RendererSubPass > m_HandledSubPass
Handled Sub pass.
Definition Renderer.h:1544
uint32_t m_SubPassIndex
Current subPass Index.
Definition Renderer.h:1534
Renderer * m_Renderer
Specific Renderer pointer. Passed while this class instanced.
Definition Renderer.h:1515
VkCommandBuffer m_CommandBuffer
Current CommandBuffer.
Definition Renderer.h:1539
std::string m_RendererName
Specific renderer name, Passed by instanced.
Definition Renderer.h:2017
std::future< VkCommandBuffer > SubmitCmdsParallel(VkCommandBuffer primaryCmdBuffer, uint32_t subPass, F &&func)
Submit a group of commands to secondary command buffer, and execute all of them.
Definition Renderer.h:2273
scl::thread_unordered_map< std::string, std::shared_ptr< VulkanPipeline > > m_Pipelines
Renderer stored material pipelines.
Definition Renderer.h:2022