// Copyright 2016 Intel Corporation All Rights Reserved // // Intel makes no representations about the suitability of this software for any purpose. // THIS SOFTWARE IS PROVIDED ""AS IS."" INTEL SPECIFICALLY DISCLAIMS ALL WARRANTIES, // EXPRESS OR IMPLIED, AND ALL LIABILITY, INCLUDING CONSEQUENTIAL AND OTHER INDIRECT DAMAGES, // FOR THE USE OF THIS SOFTWARE, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PROPRIETARY // RIGHTS, AND INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // Intel does not assume any responsibility for any errors which may appear in this software // nor any responsibility to update it. #if !defined(TUTORIAL_03_HEADER) #define TUTORIAL_03_HEADER #include "VulkanCommon.h" #include "Tools.h" namespace Tutorial { // ************************************************************ // // FramebufferObject // // // // Vulkan Framebuffer's parameters container class // // ************************************************************ // struct FramebufferParameters { VkImageView ImageView; VkFramebuffer Handle; }; // ************************************************************ // // VulkanTutorial03Parameters // // // // Vulkan specific parameters // // ************************************************************ // struct VulkanTutorial03Parameters { VkRenderPass RenderPass; std::vector FramebufferObjects; VkCommandPool GraphicsCommandPool; std::vector GraphicsCommandBuffers; VkPipeline GraphicsPipeline; VulkanTutorial03Parameters() : RenderPass( VK_NULL_HANDLE ), FramebufferObjects(), GraphicsCommandPool( VK_NULL_HANDLE ), GraphicsCommandBuffers(), GraphicsPipeline( VK_NULL_HANDLE ) { } }; // ************************************************************ // // Tutorial03 // // // // Class for presenting Vulkan usage topics // // ************************************************************ // class Tutorial03 : public VulkanCommon { public: Tutorial03(); ~Tutorial03(); bool CreateRenderPass(); bool CreateFramebuffers(); bool CreatePipeline(); bool CreateCommandBuffers(); bool RecordCommandBuffers(); bool Draw() override; private: VulkanTutorial03Parameters Vulkan; Tools::AutoDeleter CreateShaderModule( const char* filename ); Tools::AutoDeleter CreatePipelineLayout(); bool CreateCommandPool( uint32_t queue_family_index, VkCommandPool *pool ); bool AllocateCommandBuffers( VkCommandPool pool, uint32_t count, VkCommandBuffer *command_buffers ); void ChildClear() override; bool ChildOnWindowSizeChanged() override; }; } // namespace Tutorial #endif // TUTORIAL_03_HEADER