1 line
67 KiB
XML
1 line
67 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="2374px" preserveAspectRatio="none" style="width:2166px;height:2374px;background:#1B1B1B;" version="1.1" viewBox="0 0 2166 2374" width="2166px" zoomAndPan="magnify"><title>Main Execution</title><defs/><g><rect fill="#1B1B1B" height="2374" style="stroke:none;stroke-width:1.0;" width="2166" x="0" y="0"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="107.5756" x="1028.1039" y="34.9659">Main Execution</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="56.9362" x="1043.9236" y="51.0679"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1048.9236" x2="1048.9236" y1="51.0679" y2="87.412"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1095.8599" x2="1095.8599" y1="51.0679" y2="87.412"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="36.9362" x="1053.9236" y="73.896">main()</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="47.6842" x="1048.5497" y="107.412"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1053.5497" x2="1053.5497" y1="107.412" y2="143.7561"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1091.2338" x2="1091.2338" y1="107.412" y2="143.7561"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="27.6842" x="1058.5497" y="130.2401">run()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="407.8729" x2="1822.316" y1="163.7561" y2="163.7561"/><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="92.5765" x="361.5847" y="1040.8125"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="366.5847" x2="366.5847" y1="1040.8125" y2="1077.1566"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="449.1612" x2="449.1612" y1="1040.8125" y2="1077.1566"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="72.5765" x="371.5847" y="1063.6405">initWindow()</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="70.1483" x="372.7987" y="1112.1566"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="50.1483" x="382.7987" y="1134.9847">glfwInit()</text><path d="M11.329,1187.8197 L11.329,1215.5257 A0,0 0 0 0 11.329,1215.5257 L287.4283,1215.5257 A0,0 0 0 0 287.4283,1215.5257 L287.4283,1205.8197 L307.4283,1201.6727 L287.4283,1197.8197 L287.4283,1197.8197 L277.4283,1187.8197 L11.329,1187.8197 A0,0 0 0 0 11.329,1187.8197 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M277.4283,1187.8197 L277.4283,1197.8197 L287.4283,1197.8197 L277.4283,1187.8197 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="255.0992" x="17.329" y="1206.7167">Create window and initialize default settings</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="200.8893" x="307.4283" y="1183.5007"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="180.8893" x="317.4283" y="1206.3288">window = glfwCreateWindow(...)</text><path d="M27.1421,1259.1638 L27.1421,1286.8699 A0,0 0 0 0 27.1421,1286.8699 L292.0483,1286.8699 A0,0 0 0 0 292.0483,1286.8699 L292.0483,1277.1638 L312.0483,1273.0169 L292.0483,1269.1638 L292.0483,1269.1638 L282.0483,1259.1638 L27.1421,1259.1638 A0,0 0 0 0 27.1421,1259.1638 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M282.0483,1259.1638 L282.0483,1269.1638 L292.0483,1269.1638 L282.0483,1259.1638 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="243.9062" x="33.1421" y="1278.0609">Set the user-defined pointer of the window</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="191.6492" x="312.0483" y="1254.8448"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="171.6492" x="322.0483" y="1277.6729">glfwSetWindowUserPointer(...)</text><path d="M10,1326.1889 L10,1389.307 A0,0 0 0 0 10,1389.307 L278.8062,1389.307 A0,0 0 0 0 278.8062,1389.307 L278.8062,1361.7479 L298.8062,1357.7479 L278.8062,1353.7479 L278.8062,1336.1889 L268.8062,1326.1889 L10,1326.1889 A0,0 0 0 0 10,1326.1889 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M268.8062,1326.1889 L268.8062,1336.1889 L278.8062,1336.1889 L268.8062,1326.1889 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="244.3872" x="16" y="1345.0859">This is a callback to resizing of the window</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="247.8062" x="16" y="1362.7919">we call and set a bool to true, which we get</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="221.3772" x="16" y="1380.498">and rebuild the swap chain when true.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="218.1334" x="298.8062" y="1339.5759"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="198.1334" x="308.8062" y="1362.404">glfwSetFramebufferSizeCallback(...)</text><ellipse cx="407.8729" cy="1435.307" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="407.8729" cy="1435.307" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="86.5164" x="964.5728" y="183.7561"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="969.5728" x2="969.5728" y1="183.7561" y2="220.1003"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1046.0893" x2="1046.0893" y1="183.7561" y2="220.1003"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="66.5164" x="974.5728" y="206.5842">initVulkan()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="1007.8311" y1="240.1003" y2="240.1003"/><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="113.6966" x="633.9144" y="988.8553"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="638.9144" x2="638.9144" y1="988.8553" y2="1025.1994"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="742.611" x2="742.611" y1="988.8553" y2="1025.1994"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="93.6966" x="643.9144" y="1011.6834">createInstance()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="690.7627" y1="1060.1994" y2="1060.1994"/><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="262.3177" x="559.6039" y="1081.6994"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="242.3177" x="569.6039" y="1104.5275">Debug::checkUnavailableValidationLayers()</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="184.8571" x="598.3341" y="1153.0435"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="108.2527" x="608.3341" y="1175.8716">VkApplicationInfo</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="53.4844" x="719.7069" y="1175.8716">appInfo{}</text><rect fill="#313139" height="52.6882" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="204.9453" x="588.29" y="1224.3876"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="175.1892" x="598.29" y="1247.2157">set appInfo data, Vulkan version,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="184.9453" x="598.29" y="1263.5599">Engine version and name, and title</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="238.4135" x="571.5559" y="1312.0759"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="147.985" x="581.5559" y="1334.904">VkApplicationCreateInfo</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="67.3085" x="732.661" y="1334.904">createInfo{}</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="241.1255" x="570.1999" y="1383.42"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="221.1255" x="580.1999" y="1406.2481">createInfo.pApplicationInfo = &appInfo</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="327.6461" x="526.9396" y="1454.7641"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="307.6461" x="536.9396" y="1477.5922">Debug::vulkanDebugSetup(createInfo, vulkaninstance)</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="690.7627" y1="1511.1082" y2="1511.1082"/><path d="M1158.3395,264.4193 L1158.3395,274.2723 L1138.3395,278.2723 L1158.3395,282.2723 L1158.3395,292.1253 A0,0 0 0 0 1158.3395,292.1253 L1461.8428,292.1253 A0,0 0 0 0 1461.8428,292.1253 L1461.8428,274.4193 L1451.8428,264.4193 L1158.3395,264.4193 A0,0 0 0 0 1158.3395,264.4193 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1451.8428,264.4193 L1451.8428,274.4193 L1461.8428,274.4193 L1451.8428,264.4193 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="282.5033" x="1164.3395" y="283.3163">Setup debug messenger, print data to console</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="273.7538" x="864.5857" y="260.1003"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="253.7538" x="874.5857" y="282.9283">Debug::setupDebugMessenger(VkInstance&)</text><path d="M1114.5212,306.4444 L1114.5212,339.0034 L1094.5212,343.0034 L1114.5212,347.0034 L1114.5212,379.5624 A0,0 0 0 0 1114.5212,379.5624 L1502.4596,379.5624 A0,0 0 0 0 1502.4596,379.5624 L1502.4596,316.4444 L1492.4596,306.4444 L1114.5212,306.4444 A0,0 0 0 0 1114.5212,306.4444 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1492.4596,306.4444 L1492.4596,316.4444 L1502.4596,316.4444 L1492.4596,306.4444 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="303.5373" x="1120.5212" y="325.3414">This function handles Window System Integration</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="366.9384" x="1120.5212" y="343.0474">automatically across platforms based on build environment.</text><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1114.5212" x2="1502.4596" y1="351.8564" y2="351.8564"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1114.5212" x2="1502.4596" y1="353.8564" y2="353.8564"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="363.6884" x="1120.5212" y="370.7534">Basically, this is an abstraction of the Window across platforms</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="186.1172" x="908.404" y="324.8313"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="166.1172" x="918.404" y="347.6594">glfwCreateWindowSurface(...)</text><rect fill="none" height="359.7122" style="stroke:#FFFFFF;stroke-width:1.5;" width="515.0841" x="916.9502" y="389.5624"/><path d="M1025.4398,389.5624 L1025.4398,401.6303 L1015.4398,411.6303 L916.9502,411.6303 " fill="none" style="stroke:#FFFFFF;stroke-width:1.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="98.4896" x="919.9502" y="405.5284">DeviceControl</text><path d="M1092.447,421.6303 L1092.447,463.0424 L1072.447,467.0424 L1092.447,471.0424 L1092.447,512.4544 A0,0 0 0 0 1092.447,512.4544 L1374.7343,512.4544 A0,0 0 0 0 1374.7343,512.4544 L1374.7343,431.6303 L1364.7343,421.6303 L1092.447,421.6303 A0,0 0 0 0 1092.447,421.6303 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1364.7343,421.6303 L1364.7343,431.6303 L1374.7343,431.6303 L1364.7343,421.6303 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="198.4452" x="1098.447" y="440.5274">Enumerate through GPU's in the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="229.3332" x="1098.447" y="458.2334">system and choose a compatible one.</text><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1092.447" x2="1374.7343" y1="467.0424" y2="467.0424"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1092.447" x2="1374.7343" y1="469.0424" y2="469.0424"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="237.0942" x="1098.447" y="485.9394">in the future, this should choose the BEST</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.38" x="1335.5413" y="485.9394"> </text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="261.2873" x="1098.447" y="503.6454">GPU, not just the first one that is compatible..</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="141.9688" x="930.4782" y="448.8703"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="121.9688" x="940.4782" y="471.6984">pickPhysicalDevice(...)</text><path d="M1095.9751,527.9204 L1095.9751,546.6265 L1075.9751,550.6265 L1095.9751,554.6265 L1095.9751,573.3325 A0,0 0 0 0 1095.9751,573.3325 L1331.5013,573.3325 A0,0 0 0 0 1331.5013,573.3325 L1331.5013,537.9204 L1321.5013,527.9204 L1095.9751,527.9204 A0,0 0 0 0 1095.9751,527.9204 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1321.5013,527.9204 L1321.5013,537.9204 L1331.5013,537.9204 L1321.5013,527.9204 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="201.9942" x="1101.9751" y="546.8175">Logical devices interface with the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="214.5262" x="1101.9751" y="564.5235">physical device and defines queues</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="149.0249" x="926.9502" y="532.4544"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="129.0249" x="936.9502" y="555.2825">createLogicalDevice(...)</text><path d="M1088.733,583.3325 L1088.733,619.7445 L1068.733,623.7445 L1088.733,627.7445 L1088.733,664.1565 A0,0 0 0 0 1088.733,664.1565 L1416.8582,664.1565 A0,0 0 0 0 1416.8582,664.1565 L1416.8582,593.3325 L1406.8582,583.3325 L1088.733,583.3325 A0,0 0 0 0 1088.733,583.3325 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1406.8582,583.3325 L1406.8582,593.3325 L1416.8582,593.3325 L1406.8582,583.3325 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="303.7452" x="1094.733" y="602.2295">Swap Chains are used to handle buffer ownership</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="280.7872" x="1094.733" y="619.9355">infrastructure. Being platform agnostic has its</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="243.4902" x="1094.733" y="637.6415">complications, this is a perfect example.</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="227.9032" x="1094.733" y="655.3475">This process is HEAVILY documented.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="134.5408" x="934.1922" y="605.5725"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="114.5408" x="944.1922" y="628.4005">createSwapChain(...)</text><path d="M1091.751,674.1565 L1091.751,701.7156 L1071.751,705.7156 L1091.751,709.7156 L1091.751,737.2746 A0,0 0 0 0 1091.751,737.2746 L1422.0343,737.2746 A0,0 0 0 0 1422.0343,737.2746 L1422.0343,684.1565 L1412.0343,674.1565 L1091.751,674.1565 A0,0 0 0 0 1091.751,674.1565 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1412.0343,674.1565 L1412.0343,684.1565 L1422.0343,684.1565 L1412.0343,674.1565 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="224.0292" x="1097.751" y="693.0536">This is a cool function, quite a simple</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="288.8473" x="1097.751" y="710.7596">description of images that will be shown on the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="157.8331" x="1097.751" y="728.4656">screen! It also determines</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="24.245" x="1258.9642" y="728.4656">how</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="120.4451" x="1286.5892" y="728.4656">to access the image</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="140.5768" x="931.1742" y="687.5435"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="120.5768" x="941.1742" y="710.3716">createImageViews(...)</text><path d="M1120.2092,759.2746 L1120.2092,786.8336 L1100.2092,790.8336 L1120.2092,794.8336 L1120.2092,822.3926 A0,0 0 0 0 1120.2092,822.3926 L1452.2606,822.3926 A0,0 0 0 0 1452.2606,822.3926 L1452.2606,769.2746 L1442.2606,759.2746 L1120.2092,759.2746 A0,0 0 0 0 1120.2092,759.2746 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1442.2606,759.2746 L1442.2606,769.2746 L1452.2606,769.2746 L1442.2606,759.2746 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="307.6713" x="1126.2092" y="778.1716">This is pretty simple, it sets up the image bit depth</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="310.0633" x="1126.2092" y="795.8776">and the color bit depth! Basically, the format of the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="249.1063" x="1126.2092" y="813.5836">displayed images, simple, but important!</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="197.4932" x="902.716" y="772.6616"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="52.6564" x="912.716" y="795.4897">Graphics</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="124.8369" x="965.3724" y="795.4897">::createRenderPass(...)</text><path d="M1135.2333,832.3926 L1135.2333,868.8047 L1115.2333,872.8047 L1135.2333,876.8047 L1135.2333,913.2167 A0,0 0 0 0 1135.2333,913.2167 L1503.5807,913.2167 A0,0 0 0 0 1503.5807,913.2167 L1503.5807,842.3926 L1493.5807,832.3926 L1135.2333,832.3926 A0,0 0 0 0 1135.2333,832.3926 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1493.5807,832.3926 L1493.5807,842.3926 L1503.5807,842.3926 L1493.5807,832.3926 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="323.7393" x="1141.2333" y="851.2897">This function creates a table of pointers to the stored</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="325.9492" x="1141.2333" y="868.9957">data that we want, in this case it would be pointing to</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="343.9673" x="1141.2333" y="886.7017">pre-programmed model view and projection values, and</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="93.6651" x="1141.2333" y="904.4077">a time variable.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="227.5414" x="887.6919" y="854.6326"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="43.7403" x="897.6919" y="877.4607">Buffers</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="163.8011" x="941.4322" y="877.4607">::createDescriptorSetLayout()</text><rect fill="none" height="293.716" style="stroke:#FFFFFF;stroke-width:1.5;" width="600.4923" x="908.0281" y="923.2167"/><path d="M979.4599,923.2167 L979.4599,935.2846 L969.4599,945.2846 L908.0281,945.2846 " fill="none" style="stroke:#FFFFFF;stroke-width:1.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="61.4318" x="911.0281" y="939.1826">Graphics</text><path d="M1104.8971,955.2846 L1104.8971,982.8437 L1084.8971,986.8437 L1104.8971,990.8437 L1104.8971,1018.4027 A0,0 0 0 0 1104.8971,1018.4027 L1439.1064,1018.4027 A0,0 0 0 0 1439.1064,1018.4027 L1439.1064,965.2846 L1429.1064,955.2846 L1104.8971,955.2846 A0,0 0 0 0 1104.8971,955.2846 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1429.1064,955.2846 L1429.1064,965.2846 L1439.1064,965.2846 L1429.1064,955.2846 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="308.7243" x="1110.8971" y="974.1816">This is a complex function that goes through every</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="313.2093" x="1110.8971" y="991.8877">step of the render pipeline and sets the settings we</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124.0981" x="1110.8971" y="1009.5937">desire for each step!</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="55.1591" x="1238.3752" y="1009.5937">HEAVILY</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="81.1591" x="1296.9143" y="1009.5937">documented.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="166.869" x="918.0281" y="968.6716"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="146.869" x="928.0281" y="991.4997">createGraphicsPipeline(...)</text><path d="M1095.7591,1053.4027 L1095.7591,1072.1087 L1075.7591,1076.1087 L1095.7591,1080.1087 L1095.7591,1098.8147 A0,0 0 0 0 1095.7591,1098.8147 L1440.4983,1098.8147 A0,0 0 0 0 1440.4983,1098.8147 L1440.4983,1063.4027 L1430.4983,1053.4027 L1095.7591,1053.4027 A0,0 0 0 0 1095.7591,1053.4027 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1430.4983,1053.4027 L1430.4983,1063.4027 L1440.4983,1063.4027 L1430.4983,1053.4027 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="320.3593" x="1101.7591" y="1072.2997">This function creates framebuffers for all the images</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="295.5163" x="1101.7591" y="1090.0057">that are queued to be displayed, very important!</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="148.5929" x="927.1662" y="1057.9366"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="128.5929" x="937.1662" y="1080.7647">createFramebuffers(...)</text><path d="M1099.3891,1133.8147 L1099.3891,1161.3737 L1079.3891,1165.3737 L1099.3891,1169.3737 L1099.3891,1196.9328 A0,0 0 0 0 1099.3891,1196.9328 L1498.5204,1196.9328 A0,0 0 0 0 1498.5204,1196.9328 L1498.5204,1143.8147 L1488.5204,1133.8147 L1099.3891,1133.8147 A0,0 0 0 0 1099.3891,1133.8147 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1488.5204,1133.8147 L1488.5204,1143.8147 L1498.5204,1143.8147 L1488.5204,1133.8147 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="357.0842" x="1105.3891" y="1152.7117">Commands in Vulkan are not executed using function calls</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="374.7513" x="1105.3891" y="1170.4177">You have to record the ops you want to perform to command</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="361.5562" x="1105.3891" y="1188.1238">buffer objects, pools manage the memory used for buffers.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="155.853" x="923.5361" y="1147.2017"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="135.853" x="933.5361" y="1170.0298">createCommandPool(...)</text><rect fill="none" height="363.5401" style="stroke:#FFFFFF;stroke-width:1.5;" width="584.5482" x="907.2421" y="1251.9328"/><path d="M1033.3297,1251.9328 L1033.3297,1264.0007 L1023.3297,1274.0007 L907.2421,1274.0007 " fill="none" style="stroke:#FFFFFF;stroke-width:1.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="116.0876" x="910.2421" y="1267.8987">TextureLibraries</text><path d="M1092.435,1291.0007 L1092.435,1327.4127 L1072.435,1331.4127 L1092.435,1335.4127 L1092.435,1371.8247 A0,0 0 0 0 1092.435,1371.8247 L1481.7903,1371.8247 A0,0 0 0 0 1481.7903,1371.8247 L1481.7903,1301.0007 L1471.7903,1291.0007 L1092.435,1291.0007 A0,0 0 0 0 1092.435,1291.0007 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1471.7903,1291.0007 L1471.7903,1301.0007 L1481.7903,1301.0007 L1471.7903,1291.0007 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="354.8093" x="1098.435" y="1309.8977">This function imports the pixels from an image, puts them</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="361.1793" x="1098.435" y="1327.6037">into a buffer, and copies them from memory into a texture!</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="368.3552" x="1098.435" y="1345.3097">A bit complicated because we are moving and freeing lots of</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="158.1972" x="1098.435" y="1363.0157">memory, but quite useful.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="141.9448" x="930.4902" y="1313.2407"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="121.9448" x="940.4902" y="1336.0687">createTextureImage()</text><path d="M1105.6831,1406.8247 L1105.6831,1434.3838 L1085.6831,1438.3838 L1105.6831,1442.3838 L1105.6831,1469.9428 A0,0 0 0 0 1105.6831,1469.9428 L1477.0855,1469.9428 A0,0 0 0 0 1477.0855,1469.9428 L1477.0855,1416.8247 L1467.0855,1406.8247 L1105.6831,1406.8247 A0,0 0 0 0 1105.6831,1406.8247 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1467.0855,1406.8247 L1467.0855,1416.8247 L1477.0855,1416.8247 L1467.0855,1406.8247 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="331.2922" x="1111.6831" y="1425.7218">This function creates a image view for the texture, just</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="350.4023" x="1111.6831" y="1443.4278">builds a struct holding information about the texture, like</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="159.4711" x="1111.6831" y="1461.1338">layers, mip levels, and etc.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="168.441" x="917.2421" y="1420.2117"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="148.441" x="927.2421" y="1443.0398">createTextureImageView()</text><path d="M1097.7211,1504.9428 L1097.7211,1550.2078 L1077.7211,1554.2078 L1097.7211,1558.2078 L1097.7211,1603.4729 A0,0 0 0 0 1097.7211,1603.4729 L1460.0623,1603.4729 A0,0 0 0 0 1460.0623,1603.4729 L1460.0623,1514.9428 L1450.0623,1504.9428 L1097.7211,1504.9428 A0,0 0 0 0 1097.7211,1504.9428 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1450.0623,1504.9428 L1450.0623,1514.9428 L1460.0623,1514.9428 L1450.0623,1504.9428 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="91.9101" x="1103.7211" y="1523.8398">This function is</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="64.558" x="1199.0112" y="1523.8398">incredibly</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="144.1702" x="1266.9492" y="1523.8398">important. This builds a</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="337.9612" x="1103.7211" y="1541.5458">texture sampler, information about what to do with the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="300.5993" x="1103.7211" y="1559.2518">texture once its created. This defines settings like</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="63.1931" x="1103.7211" y="1576.9579">UVW mode</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.484" x="1166.9141" y="1576.9579">,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="47.2941" x="1173.7782" y="1576.9579">Filtering</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.484" x="1221.0722" y="1576.9579">,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="61.5291" x="1227.9362" y="1576.9579">Anisotropy</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="30.186" x="1289.4653" y="1576.9579">, and</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="89.8041" x="1103.7211" y="1594.6639">Mipmap modes</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="152.5169" x="925.2042" y="1536.0358"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="132.5169" x="935.2042" y="1558.8639">createTextureSampler()</text><rect fill="none" height="488.1882" style="stroke:#FFFFFF;stroke-width:1.5;" width="631.9444" x="902.7781" y="1625.4729"/><path d="M963.8079,1625.4729 L963.8079,1637.5408 L953.8079,1647.5408 L902.7781,1647.5408 " fill="none" style="stroke:#FFFFFF;stroke-width:1.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="51.0298" x="905.7781" y="1641.4388">Buffers</text><path d="M1088.505,1657.5408 L1088.505,1685.0998 L1068.505,1689.0998 L1088.505,1693.0998 L1088.505,1720.6588 A0,0 0 0 0 1088.505,1720.6588 L1440.4852,1720.6588 A0,0 0 0 0 1440.4852,1720.6588 L1440.4852,1667.5408 L1430.4852,1657.5408 L1088.505,1657.5408 A0,0 0 0 0 1088.505,1657.5408 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1430.4852,1657.5408 L1430.4852,1667.5408 L1440.4852,1667.5408 L1430.4852,1657.5408 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="287.7682" x="1094.505" y="1676.4378">Vertex buffers are incredibly useful, in essence,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="330.9802" x="1094.505" y="1694.1438">you can read data from memory as vertex input to the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="260.3902" x="1094.505" y="1711.8498">vertex shader rather than hardcoded data!</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="134.0848" x="934.4202" y="1670.9278"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="114.0848" x="944.4202" y="1693.7559">createVertexBuffer()</text><path d="M1086.309,1730.6588 L1086.309,1767.0709 L1066.309,1771.0709 L1086.309,1775.0709 L1086.309,1811.4829 A0,0 0 0 0 1086.309,1811.4829 L1407.5443,1811.4829 A0,0 0 0 0 1407.5443,1811.4829 L1407.5443,1740.6588 L1397.5443,1730.6588 L1086.309,1730.6588 A0,0 0 0 0 1086.309,1730.6588 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1397.5443,1730.6588 L1397.5443,1740.6588 L1407.5443,1740.6588 L1397.5443,1730.6588 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="281.8142" x="1092.309" y="1749.5559">Index buffers are cool, basically, you can store</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="296.8553" x="1092.309" y="1767.2619">some vertices that would normally be duplicated</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="269.5682" x="1092.309" y="1784.9679">at corners to triangulate. this saves cycles at</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="183.9371" x="1092.309" y="1802.6739">scale, complex objects rejoice!</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="129.6928" x="936.6162" y="1752.8988"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109.6928" x="946.6162" y="1775.7269">createIndexBuffer()</text><path d="M1093.7431,1821.4829 L1093.7431,1857.8949 L1073.7431,1861.8949 L1093.7431,1865.8949 L1093.7431,1902.307 A0,0 0 0 0 1093.7431,1902.307 L1455.7984,1902.307 A0,0 0 0 0 1455.7984,1902.307 L1455.7984,1831.4829 L1445.7984,1821.4829 L1093.7431,1821.4829 A0,0 0 0 0 1093.7431,1821.4829 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1445.7984,1821.4829 L1445.7984,1831.4829 L1455.7984,1831.4829 L1445.7984,1821.4829 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="341.0553" x="1099.7431" y="1840.3799">Map the buffer data to memory (The struct) as a pointer</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="337.1813" x="1099.7431" y="1858.0859">we can use this as a reference of where to write data to</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="204.9582" x="1099.7431" y="1875.792">when the fence lets us write data.</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="24.791" x="1099.7431" y="1893.498">(see</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="158.6651" x="1127.9141" y="1893.498">recordCommandBuffer()</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="7.384" x="1286.5792" y="1893.498">).</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="144.5609" x="929.1822" y="1843.7229"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="124.5609" x="939.1822" y="1866.551">createUniformBuffer()</text><path d="M1094.6671,1912.307 L1094.6671,1939.866 L1074.6671,1943.866 L1094.6671,1947.866 L1094.6671,1975.425 A0,0 0 0 0 1094.6671,1975.425 L1474.2854,1975.425 A0,0 0 0 0 1474.2854,1975.425 L1474.2854,1922.307 L1464.2854,1912.307 L1094.6671,1912.307 A0,0 0 0 0 1094.6671,1912.307 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1464.2854,1912.307 L1464.2854,1922.307 L1474.2854,1922.307 L1464.2854,1912.307 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="358.6183" x="1100.6671" y="1931.204">Here we create a pool to manage the memory and allocate</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="334.6592" x="1100.6671" y="1948.91">space for the descriptor sets! Very useful and the same</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="238.3552" x="1100.6671" y="1966.616">structure as command buffers & pools.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="146.4089" x="928.2582" y="1925.6939"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="126.4089" x="938.2582" y="1948.522">createDescriptorPool()</text><path d="M1110.1472,1985.425 L1110.1472,2039.5431 L1090.1472,2043.5431 L1110.1472,2047.5431 L1110.1472,2101.6611 A0,0 0 0 0 1110.1472,2101.6611 L1524.7225,2101.6611 A0,0 0 0 0 1524.7225,2101.6611 L1524.7225,1995.425 L1514.7225,1985.425 L1110.1472,1985.425 A0,0 0 0 0 1110.1472,1985.425 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1514.7225,1985.425 L1514.7225,1995.425 L1524.7225,1995.425 L1514.7225,1985.425 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="79.3261" x="1116.1472" y="2004.322">Descriptor set</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="45.266" x="1198.8533" y="2004.322">layouts</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="228.6702" x="1247.4993" y="2004.322">specify the types of resources accessible</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="350.0384" x="1116.1472" y="2022.0281">by the graphical pipeline. A descriptor set is the actual buffer</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="329.9404" x="1116.1472" y="2039.7341">or resource that gets bound to descriptors and passed in.</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="390.7152" x="1116.1472" y="2057.4401">These differ from Vertex & Index buffers, as they are not unique</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="390.1953" x="1116.1472" y="2075.1461">to the graphics pipeline. Specification of compute vs. graphics is</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="153.5171" x="1116.1472" y="2092.8521">therefore necessary. (see</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="145.3401" x="1273.0443" y="2092.8521">createDescriptorSets()</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.9" x="1418.3844" y="2092.8521">)</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="177.3691" x="912.7781" y="2025.371"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="157.3691" x="922.7781" y="2048.1991">createDescriptorSetLayout()</text><path d="M1129.2693,2123.6611 L1129.2693,2151.2201 L1109.2693,2155.2201 L1129.2693,2159.2201 L1129.2693,2186.7792 A0,0 0 0 0 1129.2693,2186.7792 L1453.2476,2186.7792 A0,0 0 0 0 1453.2476,2186.7792 L1453.2476,2133.6611 L1443.2476,2123.6611 L1129.2693,2123.6611 A0,0 0 0 0 1129.2693,2123.6611 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1443.2476,2123.6611 L1443.2476,2133.6611 L1453.2476,2133.6611 L1443.2476,2123.6611 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="293.1763" x="1135.2693" y="2142.5581">This is the partner to the commandPool creator,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="299.5983" x="1135.2693" y="2160.2642">storing the commands we wish to perform whilst</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="264.3422" x="1135.2693" y="2177.9702">waiting in a queue. These are very efficient.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="215.6134" x="893.6559" y="2137.0481"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="52.6564" x="903.6559" y="2159.8762">Graphics</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="142.957" x="956.3123" y="2159.8762">::createCommandBuffer()</text><path d="M1131.8613,2196.7792 L1131.8613,2224.3382 L1111.8613,2228.3382 L1131.8613,2232.3382 L1131.8613,2259.8972 A0,0 0 0 0 1131.8613,2259.8972 L1495.0476,2259.8972 A0,0 0 0 0 1495.0476,2259.8972 L1495.0476,2206.7792 L1485.0476,2196.7792 L1131.8613,2196.7792 A0,0 0 0 0 1131.8613,2196.7792 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1485.0476,2196.7792 L1485.0476,2206.7792 L1495.0476,2206.7792 L1485.0476,2196.7792 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="37.804" x="1137.8613" y="2215.6762">This is</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="55.1591" x="1179.0454" y="2215.6762">HEAVILY</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="202.9172" x="1237.5844" y="2215.6762">documented, create Semaphores</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="338.8062" x="1137.8613" y="2233.3822">and Fences, for halting and starting execution, basically</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="187.6422" x="1137.8613" y="2251.0882">a traffic controller for the GPU.</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="220.7974" x="891.0639" y="2210.1661"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="89.2567" x="901.0639" y="2232.9942">RenderPresent</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="111.5408" x="990.3206" y="2232.9942">::createSyncObject()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="1007.8311" y1="2279.8972" y2="2279.8972"/><ellipse cx="1007.8311" cy="2310.8972" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1007.8311" cy="2310.8972" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="108.9806" x="1581.2507" y="1131.7156"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="88.9806" x="1591.2507" y="1154.5437">glfwPollEvents()</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="182.0371" x="1544.7225" y="1203.0597"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="162.0371" x="1554.7225" y="1225.8878">RenderPresent::drawFrame()</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="84.3324" x="1593.5748" y="1047.3715"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1598.5748" x2="1598.5748" y1="1047.3715" y2="1083.7156"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1672.9073" x2="1672.9073" y1="1047.3715" y2="1083.7156"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="64.3324" x="1603.5748" y="1070.1996">mainLoop()</text><polygon fill="#313139" points="1562.6521,1287.4038,1708.83,1287.4038,1720.83,1299.4038,1708.83,1311.4038,1562.6521,1311.4038,1550.6521,1299.4038,1562.6521,1287.4038" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="146.1779" x="1562.6521" y="1303.6718">!glfwWindowShouldClose(...)</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="133.2328" x="1569.1247" y="1346.4038"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="113.2328" x="1579.1247" y="1369.2319">vkDeviceWaitIdle(...)</text><ellipse cx="1635.7411" cy="1428.7479" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1635.7411" cy="1428.7479" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><path d="M1878.7882,1156.6816 L1878.7882,1175.3876 L1858.7882,1179.3876 L1878.7882,1183.3876 L1878.7882,1202.0937 A0,0 0 0 0 1878.7882,1202.0937 L2154.7835,1202.0937 A0,0 0 0 0 2154.7835,1202.0937 L2154.7835,1166.6816 L2144.7835,1156.6816 L1878.7882,1156.6816 A0,0 0 0 0 1878.7882,1156.6816 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M2144.7835,1156.6816 L2144.7835,1166.6816 L2154.7835,1166.6816 L2144.7835,1156.6816 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="244.9203" x="1884.7882" y="1175.5786">This function initiates a series of shutdown</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="251.5112" x="1884.7882" y="1193.2847">destroy functions, safely stopping execution</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.484" x="2136.2995" y="1193.2847">;</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="72.9444" x="1785.8439" y="1161.2156"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1790.8439" x2="1790.8439" y1="1161.2156" y2="1197.5597"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1853.7882" x2="1853.7882" y1="1161.2156" y2="1197.5597"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="52.9444" x="1795.8439" y="1184.0437">cleanup()</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="139.1128" x="1752.7596" y="1237.0937"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="119.1128" x="1762.7596" y="1259.9218">return EXIT_SUCCESS</text><ellipse cx="1822.316" cy="1319.4378" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1822.316" cy="1319.4378" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1072.3917" x2="1072.3917" y1="87.412" y2="107.412"/><polygon fill="#E7E7E7" points="1068.3917,97.412,1072.3917,107.412,1076.3917,97.412,1072.3917,101.412" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1077.1566" y2="1112.1566"/><polygon fill="#E7E7E7" points="403.8729,1102.1566,407.8729,1112.1566,411.8729,1102.1566,407.8729,1106.1566" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1148.5007" y2="1183.5007"/><polygon fill="#E7E7E7" points="403.8729,1173.5007,407.8729,1183.5007,411.8729,1173.5007,407.8729,1177.5007" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1219.8448" y2="1254.8448"/><polygon fill="#E7E7E7" points="403.8729,1244.8448,407.8729,1254.8448,411.8729,1244.8448,407.8729,1248.8448" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1291.1889" y2="1339.5759"/><polygon fill="#E7E7E7" points="403.8729,1329.5759,407.8729,1339.5759,411.8729,1329.5759,407.8729,1333.5759" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1375.92" y2="1424.307"/><polygon fill="#E7E7E7" points="403.8729,1414.307,407.8729,1424.307,411.8729,1414.307,407.8729,1418.307" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1118.0435" y2="1153.0435"/><polygon fill="#E7E7E7" points="686.7627,1143.0435,690.7627,1153.0435,694.7627,1143.0435,690.7627,1147.0435" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1189.3876" y2="1224.3876"/><polygon fill="#E7E7E7" points="686.7627,1214.3876,690.7627,1224.3876,694.7627,1214.3876,690.7627,1218.3876" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1277.0759" y2="1312.0759"/><polygon fill="#E7E7E7" points="686.7627,1302.0759,690.7627,1312.0759,694.7627,1302.0759,690.7627,1306.0759" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1348.42" y2="1383.42"/><polygon fill="#E7E7E7" points="686.7627,1373.42,690.7627,1383.42,694.7627,1373.42,690.7627,1377.42" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1419.7641" y2="1454.7641"/><polygon fill="#E7E7E7" points="686.7627,1444.7641,690.7627,1454.7641,694.7627,1444.7641,690.7627,1448.7641" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1061.6994" y2="1081.6994"/><polygon fill="#E7E7E7" points="686.7627,1071.6994,690.7627,1081.6994,694.7627,1071.6994,690.7627,1075.6994" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1491.1082" y2="1511.1082"/><polygon fill="#E7E7E7" points="686.7627,1501.1082,690.7627,1511.1082,694.7627,1501.1082,690.7627,1505.1082" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1025.1994" y2="1060.1994"/><polygon fill="#E7E7E7" points="686.7627,1050.1994,690.7627,1060.1994,694.7627,1050.1994,690.7627,1054.1994" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="296.4444" y2="324.8313"/><polygon fill="#E7E7E7" points="997.4626,314.8313,1001.4626,324.8313,1005.4626,314.8313,1001.4626,318.8313" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="485.2144" y2="532.4544"/><polygon fill="#E7E7E7" points="997.4626,522.4544,1001.4626,532.4544,1005.4626,522.4544,1001.4626,526.4544" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="568.7985" y2="605.5725"/><polygon fill="#E7E7E7" points="997.4626,595.5725,1001.4626,605.5725,1005.4626,595.5725,1001.4626,599.5725" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="641.9166" y2="687.5435"/><polygon fill="#E7E7E7" points="997.4626,677.5435,1001.4626,687.5435,1005.4626,677.5435,1001.4626,681.5435" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="361.1755" y2="448.8703"/><polygon fill="#E7E7E7" points="997.4626,438.8703,1001.4626,448.8703,1005.4626,438.8703,1001.4626,442.8703" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="723.8876" y2="772.6616"/><polygon fill="#E7E7E7" points="997.4626,762.6616,1001.4626,772.6616,1005.4626,762.6616,1001.4626,766.6616" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="809.0057" y2="854.6326"/><polygon fill="#E7E7E7" points="997.4626,844.6326,1001.4626,854.6326,1005.4626,844.6326,1001.4626,848.6326" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1005.0157" y2="1057.9366"/><polygon fill="#E7E7E7" points="997.4626,1047.9366,1001.4626,1057.9366,1005.4626,1047.9366,1001.4626,1051.9366" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1094.2808" y2="1147.2017"/><polygon fill="#E7E7E7" points="997.4626,1137.2017,1001.4626,1147.2017,1005.4626,1137.2017,1001.4626,1141.2017" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="890.9767" y2="968.6716"/><polygon fill="#E7E7E7" points="997.4626,958.6716,1001.4626,968.6716,1005.4626,958.6716,1001.4626,962.6716" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1349.5848" y2="1420.2117"/><polygon fill="#E7E7E7" points="997.4626,1410.2117,1001.4626,1420.2117,1005.4626,1410.2117,1001.4626,1414.2117" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1456.5558" y2="1536.0358"/><polygon fill="#E7E7E7" points="997.4626,1526.0358,1001.4626,1536.0358,1005.4626,1526.0358,1001.4626,1530.0358" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1183.5458" y2="1313.2407"/><polygon fill="#E7E7E7" points="997.4626,1303.2407,1001.4626,1313.2407,1005.4626,1303.2407,1001.4626,1307.2407" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1707.2719" y2="1752.8988"/><polygon fill="#E7E7E7" points="997.4626,1742.8988,1001.4626,1752.8988,1005.4626,1742.8988,1001.4626,1746.8988" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1789.2429" y2="1843.7229"/><polygon fill="#E7E7E7" points="997.4626,1833.7229,1001.4626,1843.7229,1005.4626,1833.7229,1001.4626,1837.7229" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1880.067" y2="1925.6939"/><polygon fill="#E7E7E7" points="997.4626,1915.6939,1001.4626,1925.6939,1005.4626,1915.6939,1001.4626,1919.6939" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1962.0381" y2="2025.371"/><polygon fill="#E7E7E7" points="997.4626,2015.371,1001.4626,2025.371,1005.4626,2015.371,1001.4626,2019.371" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1572.3799" y2="1670.9278"/><polygon fill="#E7E7E7" points="997.4626,1660.9278,1001.4626,1670.9278,1005.4626,1660.9278,1001.4626,1664.9278" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="2061.7151" y2="2137.0481"/><polygon fill="#E7E7E7" points="997.4626,2127.0481,1001.4626,2137.0481,1005.4626,2127.0481,1001.4626,2131.0481" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="2173.3922" y2="2210.1661"/><polygon fill="#E7E7E7" points="997.4626,2200.1661,1001.4626,2210.1661,1005.4626,2200.1661,1001.4626,2204.1661" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="241.6003" y2="988.8553"/><polygon fill="#E7E7E7" points="686.7627,978.8553,690.7627,988.8553,694.7627,978.8553,690.7627,982.8553" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="241.6003" y2="260.1003"/><polygon fill="#E7E7E7" points="997.4626,250.1003,1001.4626,260.1003,1005.4626,250.1003,1001.4626,254.1003" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1512.6082" y2="2279.8972"/><polygon fill="#E7E7E7" points="686.7627,2269.8972,690.7627,2279.8972,694.7627,2269.8972,690.7627,2273.8972" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="2246.5103" y2="2279.8972"/><polygon fill="#E7E7E7" points="997.4626,2269.8972,1001.4626,2279.8972,1005.4626,2269.8972,1001.4626,2273.8972" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1007.8311" x2="1007.8311" y1="220.1003" y2="240.1003"/><polygon fill="#E7E7E7" points="1003.8311,230.1003,1007.8311,240.1003,1011.8311,230.1003,1007.8311,234.1003" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1007.8311" x2="1007.8311" y1="2281.3972" y2="2299.8972"/><polygon fill="#E7E7E7" points="1003.8311,2289.8972,1007.8311,2299.8972,1011.8311,2289.8972,1007.8311,2293.8972" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1635.7411" x2="1635.7411" y1="1168.0597" y2="1203.0597"/><polygon fill="#E7E7E7" points="1631.7411,1193.0597,1635.7411,1203.0597,1639.7411,1193.0597,1635.7411,1197.0597" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1635.7411" x2="1635.7411" y1="1083.7156" y2="1131.7156"/><polygon fill="#E7E7E7" points="1631.7411,1121.7156,1635.7411,1131.7156,1639.7411,1121.7156,1635.7411,1125.7156" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1720.83" x2="1738.7596" y1="1299.4038" y2="1299.4038"/><polygon fill="#E7E7E7" points="1734.7596,1192.4737,1738.7596,1182.4737,1742.7596,1192.4737,1738.7596,1188.4737" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1738.7596" x2="1738.7596" y1="1065.5435" y2="1299.4038"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1738.7596" x2="1677.9073" y1="1065.5435" y2="1065.5435"/><polygon fill="#E7E7E7" points="1687.9073,1061.5435,1677.9073,1065.5435,1687.9073,1069.5435,1683.9073,1065.5435" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1635.7411" x2="1635.7411" y1="1239.4038" y2="1287.4038"/><polygon fill="#E7E7E7" points="1631.7411,1277.4038,1635.7411,1287.4038,1639.7411,1277.4038,1635.7411,1281.4038" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1635.7411" x2="1635.7411" y1="1311.4038" y2="1346.4038"/><polygon fill="#E7E7E7" points="1631.7411,1336.4038,1635.7411,1346.4038,1639.7411,1336.4038,1635.7411,1340.4038" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1635.7411" x2="1635.7411" y1="1382.7479" y2="1417.7479"/><polygon fill="#E7E7E7" points="1631.7411,1407.7479,1635.7411,1417.7479,1639.7411,1407.7479,1635.7411,1411.7479" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1822.316" x2="1822.316" y1="1197.5597" y2="1237.0937"/><polygon fill="#E7E7E7" points="1818.316,1227.0937,1822.316,1237.0937,1826.316,1227.0937,1822.316,1231.0937" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1822.316" x2="1822.316" y1="1273.4378" y2="1308.4378"/><polygon fill="#E7E7E7" points="1818.316,1298.4378,1822.316,1308.4378,1826.316,1298.4378,1822.316,1302.4378" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="165.2561" y2="1040.8125"/><polygon fill="#E7E7E7" points="403.8729,1030.8125,407.8729,1040.8125,411.8729,1030.8125,407.8729,1034.8125" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1007.8311" x2="1007.8311" y1="165.2561" y2="183.7561"/><polygon fill="#E7E7E7" points="1003.8311,173.7561,1007.8311,183.7561,1011.8311,173.7561,1007.8311,177.7561" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1635.7411" x2="1635.7411" y1="165.2561" y2="1047.3715"/><polygon fill="#E7E7E7" points="1631.7411,1037.3715,1635.7411,1047.3715,1639.7411,1037.3715,1635.7411,1041.3715" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1822.316" x2="1822.316" y1="165.2561" y2="1161.2156"/><polygon fill="#E7E7E7" points="1818.316,1151.2156,1822.316,1161.2156,1826.316,1151.2156,1822.316,1155.2156" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1072.3917" x2="1072.3917" y1="143.7561" y2="163.7561"/><polygon fill="#E7E7E7" points="1068.3917,153.7561,1072.3917,163.7561,1076.3917,153.7561,1072.3917,157.7561" style="stroke:#E7E7E7;stroke-width:1.0;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="364.0126" x="899.8855" y="2336.8632">Main execution from the run function in the entrypoint</text><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="375.5206" x="892.3114" y="2355.9311">This dictates basic flow of the vulkan boilerplate system.</text><!--SRC=[ZLbTRzku4dtFhs3seJSrlFQxkxj0cwRT02bki4xIkqyNj4HPR2HIbvJiUXVxt- -P6LAs4wTjKQ2MD1pEnvapGxQtVMFK9ssTklfgYg6ttfqLkgD_rPbIy_bambzD_gggu5lLrqQ50G-3A_WjHEYTSNtOTTwwVZAPpvE2kzf6LTgYrxs9QgMZBLJL-Ato5I_Q3CsZTchbRMD2rq1AnLtiJJjJhCMuCfbqThOWXIqikdXDtzweNtxfWYzCEGJpss_o6OQT_XgxnlOYOvtjFrjN-kqBYjPDjRs6qCNhDsUBBKkgNnMzlGm69gR5izaC0ix3viPKFNii0YejqgvKj9lLZVtBgD9KUcXw5KtVMxUEuXyfa3sN9jbr7qsufKYQy7GNoGmaENm317-6MkjCgJfPaKChDfpOuqFGhLaDLMN24cPTwgPPwUBnz4wSGFpLgaXoglSgc6Z_WWlFzg8bMyEox3rSnTALzmqjwyDWfcfRsw9Ma5gRFYqXqG2RR5EolhZLdIfgGj-sDeuNpWvSYRtl9ALAho6rJ-m30-gx62WuJzSkzjeLvflYxs7NUh4eQbCytZkzqRRHgyOy8AUb9cJUw9q9aS4ocJmylksmhk0lrwxoaudINKU__lxd3MtE8P4t2WhqL8dDQWCjM3ITpzNPV7xbriXgVid1TCZRb7_rLBkm-DcEbyalthSO7tZh_UEiUs8auFqgsVHcz5Xgan-0cg6xs2kOfiArAO3mtL2sEM97UKcw8YdWtvzCZCQjWUo7nnp_LnbtmQxhVg5uEvGBn5MRvQUg2m0unup0L7WNVPDWVLYOoo5K6aazm3Fh1T8OpIDnrGXb0rgIPMh9nAEkKKJhe3CDwg7tBPu8qZkbY-1ZLCHKbGyjKnfA3w82NkCsDdZNWWndMFmh_Z30tn7paOOfy9qg2abTnJveCIPLKhBbwJw2VSNWxtH0_cdDJvF9UxEnXRdq85_VJ2O_gR-ntwApnUDjlUCzHI95GwcZU2XrvORM1EAilWv-MDVgu-tzls8cTPOHHcRW5RNtqH0R-BP3L508SDxCM2vvI_wcvTNGevQIpx7sGpEgeC_lhfPtX7PPWusdP9xwCaIXjye6_89-FEcUWhRVTZPZxXYZ0gy5dpT-_Nstan0mHbBaBfYJK0Cgw-kzwrqAOXBa60ZVHlM_mGmcdhHX2Vww9FfwQNyIK2m180Gcyf90BP1KmixARntAlxQT66DT5JGGCnGKrPbwPuY2CqPGSSv701LAu50VPH55B9TwF42Vwk2mANgqTms9b48k42R1o6A_NxrzkBxvKvM-60ZKffoTTFYwrMlpOCqslkJnGIEXRf2BS8emsfuG5IsPmRAbYKMmNQuBIygZO61hqLbMXi2qTLHtI9M058OOTwwkGJrD1BKQPBJbHCtdDJKdYgyks3FABsizTEQVCwBJZq5tQ51nCbaat_w01FgnZl55Ik6WeQllaXTJn9zwNrJWiN4pjSBRqdG0616BarvN-CQ7_QTpTSGLA0Ba5euBFs1TQK6mQ3bbYijqt7Cre4RQpWUGQd- -9mnuzOu1TU3K-nHY7q2sw61-u75dxvfwHfUoa3BOQwxxAeySaPixzMteCoKPoIJD2KD9mPofC0gLC1YJmhDbDa0gMGaX6Kgm587y6GW41RSjd6nzQHgr0RGuOlZonOWz6zqCv3wzfdYYAxPec3fOCc_s0c7kyvkuKjpAhszjPngWvaTWJ57_keyFkxlsZ5IXKeFklKiSsfikStnWGAakRPK79O5b7WuHk5mBDZ0AbD6OcqZHEORZL9beyz-hpODvxzlL-IpJrS5Aje36kX7EYM3ORU8mvaDcCIHrHEbKSH0ES7dAnalVjWZ3BQZX9HEJ2BUcD37HhjGmv8I2lOT8EDhx0NkJbN_w0RouCJAz5Zv8yVakAc2V8KgVY1I9Itc-uFraUIRa5O4FcEjWQ5JuJcLDYbhJUhZ9F4wHIb6R7HFC4HBlp5VYyHkx2i2iUOh8z9cPzU99GDI9f4c41KIT_MgQAESrxIHTC7gGpstg9iI7oL2fei9treY8h4rU9T5UB3hdvM-PiiRkOgYK2mt_gU8fCQtVK398RmLgfj-DXm6-ulMYMaXBMW3MLaDp6iE7mQ0sS_7Z8DQ9V9b2A3KKeEJAL6QDb68CS2Gk7LRLlYd9Q7HTPc2UmbVWoMC5ZNsKGctu631LBTfrWyfl4ZMPllYcJqjkl-47FC9lEkHWTOa9Q8VI7wjg9gAZ3rAPie6AiiFqX2jRAbuaj_HF1f-yrcCyvs52R2xJHda66jcAmf07kVk7pqpRy_aKJnziWnO18Nbywspq65Qx7JsF1JQVVx9TYw685iRZqUv9tOozxAXS7ao0pVBjTBc8HAvCnkW-c0bztARun56OAQyYTYXGGzYabBPsM1cOj3QYrhfkw5CVv8NfVQmraJr6xDeGzZITEq9Pm4tHTveGhz4YNl26jVFt8rzeh9hA5OiC3zboRihIX7pB9ygUPrvfpzo57S62pZV4tCDOqRn8KvK7bxiykgjR3tHJCqjZFLWLyDWLT9JIATOHDg0uSezCl8aWVl7O-xJBzyuIFB_Xz2SjqrHYutmIJBcukEC9X8htDIL6v_64r_AjXACqYzai40pqKAwfDM-H8EuFsq1qbBNBQhw5e6cCfHiUxUA1f8pF5z4OrAWqcDImiZ-JoUlJFB0VnRZzdNByTxACF93h9StzXrr_re6eef1AJncKL7HqhCd4LuwRySXnJbMHmJ-Ef22CVFJBfmsAL-w86NMlf0r-pwkZ0VEPQ_Fv-oEJ4Bw6fL7WiDqKjje9u-uwGzs3Bf_y40Z1CitJQP09WvIjH7WjunmERddAcg5Z7JjFV4goE80F41IlHaMGoHkboOvo3j9qFEBiLKMPIt4ye97SpP86W37I6CH8PSf8_FFgk7Qd55cOiHkdcS5PZ5B2mlxGctZWp98Zayvr51KgDSn0QXDdUtaxpcW042203Go5J8VTB8FrHBeYe_MOWayUZPv0_EJv8KMPADmH0_fqwXa7Fa6rHtywKqnMV1ROoqG-GzXO7mveszesqhctslRIfr4NF8FEKl0fe3nycWgHidmdStWeIWSxfDdGfNLsQhbpnR-Pi2vUEkoT7h-dkJwN1fsiHhXZEkTz8DP0ggaAQztqUJ2AFJKsF8ntx0SCdWurGPFrTDr5LpmDeIdLyiVR-mE73YxWdjwE1jF1BZLUeDzutvs-yqJvqdNQBJQwsi2fA3MxE0hLOb46lULZ1NrEsYaZHbsSq_fq4SSNFfUDZtAS8aGjDezoC_CPQRikctpGEdsZYvwYtV22hKUPIJVL1_yfGTVkClz5G-Cr5KciXnw6kNJjZ296J7VZAZfBwyeWz6HETvGOkcqTRz9nrX-2KrV_kRxxx_B-yl9gkKmkxBFmVm00]--></g></svg> |