void VulkanWindow::Initialize() { InitializeSurface(); InitializeSwapchain(); InitializeImageViews(); InitializeDepthStencil(); InitializeFrameBuffers(); }
PickingPass::PickingPass(IRenderer* renderer, EventBroker* eb) { m_Renderer = renderer; m_EventBroker = eb; InitializeTextures(); InitializeFrameBuffers(); InitializeShaderPrograms(); }
void VulkanWindow::OnResizeViewport ( int32_t aX, int32_t aY, uint32_t aWidth, uint32_t aHeight ) { VkSurfaceCapabilitiesKHR surface_capabilities{}; VkResult result {vkGetPhysicalDeviceSurfaceCapabilitiesKHR ( mVulkanRenderer.GetPhysicalDevice(), mVkSurfaceKHR, &surface_capabilities ) }; if ( result == VK_SUCCESS && std::memcmp ( &surface_capabilities, &mVkSurfaceCapabilitiesKHR, sizeof ( VkSurfaceCapabilitiesKHR ) ) != 0 ) { if ( VK_SUCCESS != ( result = vkQueueWaitIdle ( mVulkanRenderer.GetQueue() ) ) ) { std::ostringstream stream; stream << "vkQueueWaitIdle failed: " << GetVulkanResultString ( result ); throw std::runtime_error ( stream.str().c_str() ); } if ( VK_SUCCESS != ( result = vkDeviceWaitIdle ( mVulkanRenderer.GetDevice() ) ) ) { std::ostringstream stream; stream << "vkDeviceWaitIdle failed: " << GetVulkanResultString ( result ); throw std::runtime_error ( stream.str().c_str() ); } FinalizeFrameBuffers(); FinalizeDepthStencil(); FinalizeImageViews(); InitializeSwapchain(); InitializeImageViews(); InitializeDepthStencil(); InitializeFrameBuffers(); } mVkViewport.x = static_cast<float> ( aX ); mVkViewport.y = static_cast<float> ( aY ); mVkViewport.width = static_cast<float> ( aWidth ); mVkViewport.height = static_cast<float> ( aHeight ); // Clip Scissors to surface extents mVkScissor.offset.x = ( aX < 0 ) ? 0 : aX; mVkScissor.offset.y = ( aY < 0 ) ? 0 : aY; mVkScissor.extent.width = ( aX + aWidth > mVkSurfaceCapabilitiesKHR.currentExtent.width ) ? mVkSurfaceCapabilitiesKHR.currentExtent.width : aX + aWidth; mVkScissor.extent.height = ( aY + aHeight > mVkSurfaceCapabilitiesKHR.currentExtent.height ) ? mVkSurfaceCapabilitiesKHR.currentExtent.height : aY + aHeight; }