package Ġorg . aqu ila 3 d . core . surface . swap chain Ċ Ċ import Ġorg . aqu ila 3 d . core . v ulkan . device . VkDevice Ċ import Ġorg . aqu ila 3 d . core . v ulkan . Vk Image Ċ import Ġorg . aqu ila 3 d . core . v ulkan . Vk ImageView Ċ import Ġorg . aqu ila 3 d . core . v ulkan . Vk Result Ċ import Ġorg . aqu ila 3 d . core . v ulkan . surface _ khr . Vk Surface Format KHR Ċ import Ġorg . lwjgl . system . Memory Util .* Ċ import Ġorg . lwjgl . v ulkan . KHR Swap chain Ċ import Ġorg . lwjgl . v ulkan . KHR Swap chain . vkGet Swap chain Images KHR Ċ import Ġorg . lwjgl . v ulkan . VK 1 0 .* Ċ import Ġorg . lwjgl . v ulkan . Vk ImageView CreateInfo Ċ Ċ actual Ġclass ĠSwap chain ( val Ġhandle : ĠLong , Ġval Ġformat : ĠVk Surface Format KHR , Ġval Ġdevice : ĠVk Device ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġimages : ĠArray < Vk Image > ĊĠĠĠ Ġprivate Ġvar Ġimage Views : ĠArray < Vk ImageView > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Count Pointer Ġ= Ġmem Alloc Int ( 1 ) ĊĠĠĠĠĠĠĠ Ġvar Ġerr Ġ= ĠvkGet Swap chain Images KHR ( device . handle , Ġhandle , Ġimage Count Pointer , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Count Ġ= Ġimage Count Pointer [ 0 ] ĊĠĠĠĠĠĠĠ Ġif Ġ( err Ġ!= ĠVK _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" Failed Ġto Ġget Ġnumber Ġof Ġswap chain Ġimages : Ġ${ Vk Result ( err )} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġimages Pointer Ġ= Ġmem Alloc Long ( image Count ) ĊĠĠĠĠĠĠĠ Ġerr Ġ= ĠvkGet Swap chain Images KHR ( device . handle , Ġhandle , Ġimage Count Pointer , Ġimages Pointer ) ĊĠĠĠĠĠĠĠ Ġif Ġ( err Ġ!= ĠVK _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" Failed Ġto Ġget Ġswap chain Ġimages : Ġ${ Vk Result ( err )} ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmem Free ( image Count Pointer ) ĊĊĠĠĠĠĠĠĠ Ġ// TODO : ĠMake Ġthe Ġcreate Ġinfo Ġstruct Ġconfigurable Ġby Ġlibrary Ġusers ĊĠĠĠĠĠĠĠ Ġval Ġbuffer View Pointer Ġ= Ġmem Alloc Long ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġcolor Attachment View Ġ= ĠVk ImageView CreateInfo . calloc () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. sType ( VK _ STRUCTURE _ TYPE _ IMAGE _ VIEW _ CREATE _ INFO ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( format . get Format (). value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. view Type ( VK _ IMAGE _ VIEW _ TYPE _ 2 D ) ĊĠĠĠĠĠĠĠ Ġcolor Attachment View . sub resource Range () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. aspect Mask ( VK _ IMAGE _ AS PECT _ COLOR _ BIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. level Count ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. layer Count ( 1 ) ĊĠĠĠĠĠĠĠ Ġimages Ġ= ĠArray ( image Count ) Ġ{ ĠVk Image ( images Pointer [ it ]) Ġ} ĊĠĠĠĠĠĠĠ Ġimage Views Ġ= ĠArray ( image Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Attachment View . image ( images [ it ]. handle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerr Ġ= Ġvk Create ImageView ( device . handle , Ġcolor Attachment View , Ġnull , Ġbuffer View Pointer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( err Ġ!= ĠVK _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" Failed Ġto Ġcreate Ġimage Ġview : Ġ${ Vk Result ( err )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVk ImageView ( buffer View Pointer [ 0 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcolor Attachment View . free () ĊĠĠĠĠĠĠĠ Ġmem Free ( buffer View Pointer ) ĊĠĠĠĠĠĠĠ Ġmem Free ( images Pointer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( view Ġin Ġimage Views ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . destroy ( device ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( handle Ġ!= ĠVK _ NULL _ HANDLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK HR Swap chain . vk Destroy Swap chain KHR ( device . handle , Ġhandle , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ