package Ġtests Ċ Ċ import Ġglm _. mat 4 x 4 . Mat 4 Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġmain . isNot CI Ċ import Ġvk k . Vk Buffer Usage Ċ import Ġvk k . entities . VkDevice Size Ċ import Ġvk k . ptr Of Ċ import Ġvk k . unique .` try ` Ċ import Ġvk k . unique . vu Ċ import Ġvk k . vk 1 0 . structs . Extent 2 D Ċ Ċ class Ġ` 0 9 Ġinit DescriptorSet ` Ġ: ĠString Spec () Ġ{ ĊĊĠĠĠ Ġval ĠappName Ġ= Ġ" 0 9 _ Init DescriptorSet " ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isNot CI ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠappName Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` try ` Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġv u . create Instance ( appName , Ġengine Name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( DEBUG ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvk :: Unique Debug Utils Messenger EXT Ġdebug Utils Messenger Ġ= Ġvk :: su :: create Debug Utils Messenger ( instance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphysical Device Ġ= Ġinstance . physical Devices [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= Ġv u . create Device ( physical Device , Ġv u . find Graphics Queue Family Index ( physical Device . queue Family Properties )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠPro va () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuniform BufferData Ġ= Ġv u . new BufferData ( physical Device , Ġdevice , ĠVk Device Size ( Mat 4 . size ), ĠVk Buffer Usage . UNIFORM _ BUFFER _ BIT . i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm vp Ġ= Ġv u . create Model View Projection Clip Matrix ( Extent 2 D ( 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv u . copy To Device ( device , Ġuniform BufferData . device Memory , Ġstack . ptr Of ( mvp ), ĠMat 4 . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor Set Layout Ġ= Ġv u . create DescriptorSet Layout ( device , Ġ{ Ġ{ vk :: Descriptor Type :: e Uniform Buffer , Ġ 1 , Ġvk :: Shader Stage Flag Bits :: e Vertex } Ġ}) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠVULKAN _ HPP _ KEY _ START Ġ*/ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġa Ġdescriptor Ġpool Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvk :: Descriptor PoolSize Ġpool Size ( vk :: Descriptor Type :: e Uniform Buffer , Ġ 1 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvk :: Unique Descriptor Pool Ġdescriptor Pool Ġ= Ġdevice -> create Descriptor Pool Unique ( vk :: Descriptor Pool CreateInfo ( vk :: Descriptor Pool Create Flag Bits :: e Free DescriptorSet , Ġ 1 , Ġ 1 , Ġ& pool Size )) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġallocate Ġa Ġdescriptor Ġset Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvk :: Unique DescriptorSet Ġdescriptor Set Ġ= Ġstd :: move ( device -> allocate Descriptor Sets Unique ( vk :: DescriptorSet Allocate Info (* descriptor Pool , Ġ 1 , Ġ& * descriptor Set Layout )). front ()) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvk :: Descriptor Buffer Info Ġdescriptor Buffer Info ( uniform BufferData . buffer . get (), Ġ 0 , Ġsizeof ( glm :: mat 4 x 4 )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice -> update Descriptor Sets ( vk :: Write DescriptorSet ( descriptor Set . get (), Ġ 0 , Ġ 0 , Ġ 1 , Ġvk :: Descriptor Type :: e Uniform Buffer , Ġnullptr , Ġ& descriptor Buffer Info ), Ġ{}) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠVULKAN _ HPP _ KEY _ END Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }