package Ġc andle w ax Ċ Ċ import Ġorg . apache . log 4 j . Logger Ċ import Ġorg . lwjgl . v ulkan . Vk PhysicalDevice Features Ċ import Ġorg . lwjgl . v ulkan . Vk Queue Family Properties Ċ import Ġv ulkan . app . Vulkan Application Ċ import Ġv ulkan . common . Frame Info Ċ import Ġv ulkan . common . Per Frame Resource Ċ import Ġv ulkan . common . Queues Ċ import Ġv ulkan . common . Vulkan Client Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠC andle W ax . run () ĊĠĠĠ ĠC andle W ax . destroy () Ċ } Ċ Ċ object ĠC andle W ax Ġ: ĠVulkan Client ( Parameters ( ĊĠĠĠ Ġwindow Title ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġ" C andle W ax Ġ$ VERSION ", ĊĠĠĠ Ġwindow ed ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġtrue , ĊĠĠĠ Ġenable V sync ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġfalse , ĊĠĠĠ Ġwidth ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġ 1 0 0 0 , ĊĠĠĠ Ġheight ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġ 8 0 0 , ĊĠĠĠ Ġpref Num Swap Chain Buffers Ġ= Ġ 2 )) Ċ { ĊĠĠĠ Ġval Ġlog Ġ= ĠLogger . getLogger ( this :: class . java ) ĊĊĠĠĠ Ġprivate Ġval Ġvk ĠĠĠĠ Ġ= ĠVulkan Application ( this ) ĊĠĠĠ Ġprivate Ġval Ġscene Ġ Ġ= ĠScene () ĊĊĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠ Ġvk . initial ise () ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġscene . destroy () ĊĠĠĠĠĠĠĠ Ġvk . destroy () ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġenable Features ( f : ĠVk PhysicalDevice Features ) Ġ{ ĊĠĠĠĠĠĠĠ Ġf . geometry Shader ( true ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġselect Queues ( props : ĠVk Queue Family Properties . Buffer , Ġqueues : ĠQue ues ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . select Queues ( props , Ġqueues ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġfound Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĠSelect Ġthe Ġfirst Ġcompute Ġqueue Ġthat Ġwe Ġsee Ġ*/ ĊĠĠĠĠĠĠĠ Ġprops . forEach Indexed Ġ{ Ġi , Ġfamily Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( family . queue Count () Ġ> Ġ 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( queues . is Compute ( family . queue Flags ())) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠP refer Ġnon - graphics Ġcompute Ġqueue Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! found Ġ|| Ġ! queues . is Graphics ( family . queue Flags ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueues . select ( Queues . COMPUTE , Ġi , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġv ulkan Ready ( vk : ĠVulkan Application ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvk . shaders . set Compiler Path ("/ p vm oo re /_ tools / gl s lang Validator . exe ") ĊĊĠĠĠĠĠĠĠ Ġscene . init ( vk ) ĊĊĠĠĠĠĠĠĠ Ġvk . graphics . show Window () ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġvk . graphics . enter Loop () ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġrender ( frame : ĠFrame Info , Ġres : ĠPer Frame Resource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscene . update ( frame , Ġres ) ĊĠĠĠĠĠĠĠ Ġscene . render ( frame , Ġres ) ĊĠĠĠ Ġ} Ċ }