AgnosiaEngine/Flowgraph.svg

1 line
71 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="2599px" preserveAspectRatio="none" style="width:2167px;height:2599px;background:#1B1B1B;" version="1.1" viewBox="0 0 2167 2599" width="2167px" zoomAndPan="magnify"><title>Main Execution</title><defs/><g><rect fill="#1B1B1B" height="2599" style="stroke:none;stroke-width:1.0;" width="2167" x="0" y="0"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="107.5756" x="1028.4399" y="34.9659">Main Execution</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="56.9362" x="1044.2596" y="51.0679"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1049.2596" x2="1049.2596" y1="51.0679" y2="87.412"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1096.1959" x2="1096.1959" 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="1054.2596" y="73.896">main()</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="47.6842" x="1048.8857" y="107.412"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1053.8857" x2="1053.8857" y1="107.412" y2="143.7561"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1091.5698" x2="1091.5698" 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.8857" y="130.2401">run()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="407.8729" x2="1822.9881" 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="1161.1705"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="366.5847" x2="366.5847" y1="1161.1705" y2="1197.5146"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="449.1612" x2="449.1612" y1="1161.1705" y2="1197.5146"/><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="1183.9986">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="1232.5146"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="50.1483" x="382.7987" y="1255.3427">glfwInit()</text><path d="M11.329,1308.1778 L11.329,1335.8838 A0,0 0 0 0 11.329,1335.8838 L287.4283,1335.8838 A0,0 0 0 0 287.4283,1335.8838 L287.4283,1326.1778 L307.4283,1322.0308 L287.4283,1318.1778 L287.4283,1318.1778 L277.4283,1308.1778 L11.329,1308.1778 A0,0 0 0 0 11.329,1308.1778 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M277.4283,1308.1778 L277.4283,1318.1778 L287.4283,1318.1778 L277.4283,1308.1778 " 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="1327.0748">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="1303.8587"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="180.8893" x="317.4283" y="1326.6868">window = glfwCreateWindow(...)</text><path d="M27.1421,1379.5219 L27.1421,1407.2279 A0,0 0 0 0 27.1421,1407.2279 L292.0483,1407.2279 A0,0 0 0 0 292.0483,1407.2279 L292.0483,1397.5219 L312.0483,1393.3749 L292.0483,1389.5219 L292.0483,1389.5219 L282.0483,1379.5219 L27.1421,1379.5219 A0,0 0 0 0 27.1421,1379.5219 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M282.0483,1379.5219 L282.0483,1389.5219 L292.0483,1389.5219 L282.0483,1379.5219 " 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="1398.4189">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="1375.2028"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="171.6492" x="322.0483" y="1398.0309">glfwSetWindowUserPointer(...)</text><path d="M10,1446.5469 L10,1509.665 A0,0 0 0 0 10,1509.665 L278.8062,1509.665 A0,0 0 0 0 278.8062,1509.665 L278.8062,1482.106 L298.8062,1478.106 L278.8062,1474.106 L278.8062,1456.5469 L268.8062,1446.5469 L10,1446.5469 A0,0 0 0 0 10,1446.5469 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M268.8062,1446.5469 L268.8062,1456.5469 L278.8062,1456.5469 L268.8062,1446.5469 " 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="1465.4439">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="1483.15">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="1500.856">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="1459.9339"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="198.1334" x="308.8062" y="1482.762">glfwSetFramebufferSizeCallback(...)</text><ellipse cx="407.8729" cy="1555.665" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="407.8729" cy="1555.665" 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.9088" y="183.7561"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="969.9088" x2="969.9088" y1="183.7561" y2="220.1003"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1046.4253" x2="1046.4253" 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.9088" y="206.5842">initVulkan()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="1008.1671" 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="1109.2133"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="638.9144" x2="638.9144" y1="1109.2133" y2="1145.5574"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="742.611" x2="742.611" y1="1109.2133" y2="1145.5574"/><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="1132.0414">createInstance()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="690.7627" y1="1180.5574" y2="1180.5574"/><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="263.6617" x="558.9318" y="1202.0574"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="39.0483" x="568.9318" y="1224.8855">Debug</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="204.6134" x="607.9801" y="1224.8855">::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="1273.4016"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="108.2527" x="608.3341" y="1296.2296">VkApplicationInfo</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="53.4844" x="719.7069" y="1296.2296">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="1344.7457"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="175.1892" x="598.29" y="1367.5738">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="1383.9179">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="1432.4339"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="147.985" x="581.5559" y="1455.262">VkApplicationCreateInfo</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="67.3085" x="732.661" y="1455.262">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="1503.778"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="221.1255" x="580.1999" y="1526.6061">createInfo.pApplicationInfo = &amp;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="1575.1221"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="307.6461" x="536.9396" y="1597.9502">Debug::vulkanDebugSetup(createInfo, vulkaninstance)</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="690.7627" y1="1631.4662" y2="1631.4662"/><path d="M1159.6835,264.4193 L1159.6835,274.2723 L1139.6835,278.2723 L1159.6835,282.2723 L1159.6835,292.1253 A0,0 0 0 0 1159.6835,292.1253 L1463.1868,292.1253 A0,0 0 0 0 1463.1868,292.1253 L1463.1868,274.4193 L1453.1868,264.4193 L1159.6835,264.4193 A0,0 0 0 0 1159.6835,264.4193 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1453.1868,264.4193 L1453.1868,274.4193 L1463.1868,274.4193 L1453.1868,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="1165.6835" 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="275.0978" x="864.5857" y="260.1003"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="39.0483" x="874.5857" y="282.9283">Debug</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="216.0495" x="913.634" y="282.9283">::setupDebugMessenger(VkInstance&amp;)</text><rect fill="none" height="442.8302" style="stroke:#FFFFFF;stroke-width:1.5;" width="559.7071" x="917.6222" y="306.4444"/><path d="M1026.1118,306.4444 L1026.1118,318.5123 L1016.1118,328.5123 L917.6222,328.5123 " 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="920.6222" y="322.4103">DeviceControl</text><path d="M1079.391,338.5123 L1079.391,371.0713 L1059.391,375.0713 L1079.391,379.0713 L1079.391,411.6303 A0,0 0 0 0 1079.391,411.6303 L1467.3293,411.6303 A0,0 0 0 0 1467.3293,411.6303 L1467.3293,348.5123 L1457.3293,338.5123 L1079.391,338.5123 A0,0 0 0 0 1079.391,338.5123 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1457.3293,338.5123 L1457.3293,348.5123 L1467.3293,348.5123 L1457.3293,338.5123 " 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="1085.391" y="357.4093">This function handles Window System Integration</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="366.9384" x="1085.391" y="375.1153">automatically across platforms based on build environment.</text><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1079.391" x2="1467.3293" y1="383.9243" y2="383.9243"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1079.391" x2="1467.3293" y1="385.9243" y2="385.9243"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="363.6884" x="1085.391" y="402.8213">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="114.5126" x="944.8783" y="356.8993"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="94.5126" x="954.8783" y="379.7273">createSurface(...)</text><path d="M1093.1191,421.6303 L1093.1191,463.0424 L1073.1191,467.0424 L1093.1191,471.0424 L1093.1191,512.4544 A0,0 0 0 0 1093.1191,512.4544 L1375.4063,512.4544 A0,0 0 0 0 1375.4063,512.4544 L1375.4063,431.6303 L1365.4063,421.6303 L1093.1191,421.6303 A0,0 0 0 0 1093.1191,421.6303 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1365.4063,421.6303 L1365.4063,431.6303 L1375.4063,431.6303 L1365.4063,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="1099.1191" 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="1099.1191" y="458.2334">system and choose a compatible one.</text><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1093.1191" x2="1375.4063" y1="467.0424" y2="467.0424"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1093.1191" x2="1375.4063" 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="1099.1191" 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="1336.2133" y="485.9394">&#160;</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="261.2873" x="1099.1191" 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="931.1502" y="448.8703"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="121.9688" x="941.1502" y="471.6984">pickPhysicalDevice(...)</text><path d="M1096.6471,527.9204 L1096.6471,546.6265 L1076.6471,550.6265 L1096.6471,554.6265 L1096.6471,573.3325 A0,0 0 0 0 1096.6471,573.3325 L1332.1733,573.3325 A0,0 0 0 0 1332.1733,573.3325 L1332.1733,537.9204 L1322.1733,527.9204 L1096.6471,527.9204 A0,0 0 0 0 1096.6471,527.9204 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1322.1733,527.9204 L1322.1733,537.9204 L1332.1733,537.9204 L1322.1733,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="1102.6471" 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="1102.6471" 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="927.6222" y="532.4544"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="129.0249" x="937.6222" y="555.2825">createLogicalDevice(...)</text><path d="M1089.405,583.3325 L1089.405,619.7445 L1069.405,623.7445 L1089.405,627.7445 L1089.405,664.1565 A0,0 0 0 0 1089.405,664.1565 L1417.5302,664.1565 A0,0 0 0 0 1417.5302,664.1565 L1417.5302,593.3325 L1407.5302,583.3325 L1089.405,583.3325 A0,0 0 0 0 1089.405,583.3325 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1407.5302,583.3325 L1407.5302,593.3325 L1417.5302,593.3325 L1407.5302,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="1095.405" 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="1095.405" 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="1095.405" 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="1095.405" 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.8643" y="605.5725"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="114.5408" x="944.8643" y="628.4005">createSwapChain(...)</text><path d="M1092.4231,674.1565 L1092.4231,701.7156 L1072.4231,705.7156 L1092.4231,709.7156 L1092.4231,737.2746 A0,0 0 0 0 1092.4231,737.2746 L1422.7063,737.2746 A0,0 0 0 0 1422.7063,737.2746 L1422.7063,684.1565 L1412.7063,674.1565 L1092.4231,674.1565 A0,0 0 0 0 1092.4231,674.1565 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1412.7063,674.1565 L1412.7063,684.1565 L1422.7063,684.1565 L1412.7063,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="1098.4231" 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="1098.4231" 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="1098.4231" 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="1259.6362" y="728.4656">how</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="120.4451" x="1287.2612" 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.8462" y="687.5435"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="120.5768" x="941.8462" y="710.3716">createImageViews(...)</text><path d="M1120.8812,759.2746 L1120.8812,786.8336 L1100.8812,790.8336 L1120.8812,794.8336 L1120.8812,822.3926 A0,0 0 0 0 1120.8812,822.3926 L1452.9326,822.3926 A0,0 0 0 0 1452.9326,822.3926 L1452.9326,769.2746 L1442.9326,759.2746 L1120.8812,759.2746 A0,0 0 0 0 1120.8812,759.2746 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1442.9326,759.2746 L1442.9326,769.2746 L1452.9326,769.2746 L1442.9326,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.8812" 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.8812" 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.8812" 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="903.388" y="772.6616"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="52.6564" x="913.388" y="795.4897">Graphics</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="124.8369" x="966.0444" y="795.4897">::createRenderPass(...)</text><path d="M1135.9054,832.3926 L1135.9054,868.8047 L1115.9054,872.8047 L1135.9054,876.8047 L1135.9054,913.2167 A0,0 0 0 0 1135.9054,913.2167 L1504.2527,913.2167 A0,0 0 0 0 1504.2527,913.2167 L1504.2527,842.3926 L1494.2527,832.3926 L1135.9054,832.3926 A0,0 0 0 0 1135.9054,832.3926 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1494.2527,832.3926 L1494.2527,842.3926 L1504.2527,842.3926 L1494.2527,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.9054" 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.9054" 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.9054" 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.9054" 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="888.3639" y="854.6326"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="43.7403" x="898.3639" y="877.4607">Buffers</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="163.8011" x="942.1042" y="877.4607">::createDescriptorSetLayout()</text><rect fill="none" height="188.304" style="stroke:#FFFFFF;stroke-width:1.5;" width="600.4923" x="908.7001" y="923.2167"/><path d="M980.1319,923.2167 L980.1319,935.2846 L970.1319,945.2846 L908.7001,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.7001" y="939.1826">Graphics</text><path d="M1105.5692,955.2846 L1105.5692,982.8437 L1085.5692,986.8437 L1105.5692,990.8437 L1105.5692,1018.4027 A0,0 0 0 0 1105.5692,1018.4027 L1439.7784,1018.4027 A0,0 0 0 0 1439.7784,1018.4027 L1439.7784,965.2846 L1429.7784,955.2846 L1105.5692,955.2846 A0,0 0 0 0 1105.5692,955.2846 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1429.7784,955.2846 L1429.7784,965.2846 L1439.7784,965.2846 L1429.7784,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="1111.5692" 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="1111.5692" 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="1111.5692" 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="1239.0473" y="1009.5937">HEAVILY</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="81.1591" x="1297.5863" 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.7001" y="968.6716"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="146.869" x="928.7001" y="991.4997">createGraphicsPipeline(...)</text><path d="M1100.0611,1028.4027 L1100.0611,1055.9617 L1080.0611,1059.9617 L1100.0611,1063.9617 L1100.0611,1091.5207 A0,0 0 0 0 1100.0611,1091.5207 L1499.1925,1091.5207 A0,0 0 0 0 1499.1925,1091.5207 L1499.1925,1038.4027 L1489.1925,1028.4027 L1100.0611,1028.4027 A0,0 0 0 0 1100.0611,1028.4027 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1489.1925,1028.4027 L1489.1925,1038.4027 L1499.1925,1038.4027 L1489.1925,1028.4027 " 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="1106.0611" y="1047.2997">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="1106.0611" y="1065.0057">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="1106.0611" y="1082.7117">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="924.2082" y="1041.7896"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="135.853" x="934.2082" y="1064.6177">createCommandPool(...)</text><path d="M1126.1853,1146.5207 L1126.1853,1174.0798 L1106.1853,1178.0798 L1126.1853,1182.0798 L1126.1853,1209.6388 A0,0 0 0 0 1126.1853,1209.6388 L1477.9315,1209.6388 A0,0 0 0 0 1477.9315,1209.6388 L1477.9315,1156.5207 L1467.9315,1146.5207 L1126.1853,1146.5207 A0,0 0 0 0 1126.1853,1146.5207 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1467.9315,1146.5207 L1467.9315,1156.5207 L1477.9315,1156.5207 L1467.9315,1146.5207 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="327.3662" x="1132.1853" y="1165.4177">This function sets up the image views and sets for the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="328.4843" x="1132.1853" y="1183.1238">depth testing buffer to handle objects above or below</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="83.8761" x="1132.1853" y="1200.8298">other objects!</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="208.1013" x="898.084" y="1159.9077"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="46.6083" x="908.084" y="1182.7358">Texture</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="141.493" x="954.6923" y="1182.7358">::createDepthResources()</text><path d="M1125.9753,1244.6388 L1125.9753,1263.3448 L1105.9753,1267.3448 L1125.9753,1271.3448 L1125.9753,1290.0508 A0,0 0 0 0 1125.9753,1290.0508 L1470.7145,1290.0508 A0,0 0 0 0 1470.7145,1290.0508 L1470.7145,1254.6388 L1460.7145,1244.6388 L1125.9753,1244.6388 A0,0 0 0 0 1125.9753,1244.6388 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1460.7145,1244.6388 L1460.7145,1254.6388 L1470.7145,1254.6388 L1460.7145,1244.6388 " 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="1131.9753" y="1263.5358">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="1131.9753" y="1281.2418">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="207.6813" x="898.294" y="1249.1727"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="52.6564" x="908.294" y="1272.0008">Graphics</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="135.0249" x="960.9503" y="1272.0008">::createFramebuffers(...)</text><rect fill="none" height="363.5401" style="stroke:#FFFFFF;stroke-width:1.5;" width="584.5482" x="907.9141" y="1325.0508"/><path d="M972.2899,1325.0508 L972.2899,1337.1187 L962.2899,1347.1187 L907.9141,1347.1187 " 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="54.3758" x="910.9141" y="1341.0167">Texture</text><path d="M1093.1071,1364.1187 L1093.1071,1400.5308 L1073.1071,1404.5308 L1093.1071,1408.5308 L1093.1071,1444.9428 A0,0 0 0 0 1093.1071,1444.9428 L1482.4623,1444.9428 A0,0 0 0 0 1482.4623,1444.9428 L1482.4623,1374.1187 L1472.4623,1364.1187 L1093.1071,1364.1187 A0,0 0 0 0 1093.1071,1364.1187 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1472.4623,1364.1187 L1472.4623,1374.1187 L1482.4623,1374.1187 L1472.4623,1364.1187 " 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="1099.1071" y="1383.0157">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="1099.1071" y="1400.7218">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="1099.1071" y="1418.4278">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="1099.1071" y="1436.1338">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="931.1622" y="1386.3587"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="121.9448" x="941.1622" y="1409.1868">createTextureImage()</text><path d="M1106.3552,1479.9428 L1106.3552,1507.5018 L1086.3552,1511.5018 L1106.3552,1515.5018 L1106.3552,1543.0608 A0,0 0 0 0 1106.3552,1543.0608 L1477.7575,1543.0608 A0,0 0 0 0 1477.7575,1543.0608 L1477.7575,1489.9428 L1467.7575,1479.9428 L1106.3552,1479.9428 A0,0 0 0 0 1106.3552,1479.9428 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1467.7575,1479.9428 L1467.7575,1489.9428 L1477.7575,1489.9428 L1467.7575,1479.9428 " 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="1112.3552" y="1498.8398">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="1112.3552" y="1516.5458">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="1112.3552" y="1534.2518">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.9141" y="1493.3298"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="148.441" x="927.9141" y="1516.1579">createTextureImageView()</text><path d="M1098.3931,1578.0608 L1098.3931,1623.3259 L1078.3931,1627.3259 L1098.3931,1631.3259 L1098.3931,1676.5909 A0,0 0 0 0 1098.3931,1676.5909 L1460.7343,1676.5909 A0,0 0 0 0 1460.7343,1676.5909 L1460.7343,1588.0608 L1450.7343,1578.0608 L1098.3931,1578.0608 A0,0 0 0 0 1098.3931,1578.0608 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1450.7343,1578.0608 L1450.7343,1588.0608 L1460.7343,1588.0608 L1450.7343,1578.0608 " 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="1104.3931" y="1596.9579">This function is</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="64.558" x="1199.6832" y="1596.9579">incredibly</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="144.1702" x="1267.6212" y="1596.9579">important. This builds a</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="337.9612" x="1104.3931" y="1614.6639">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="1104.3931" y="1632.3699">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="1104.3931" y="1650.0759">UVW mode</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.484" x="1167.5862" y="1650.0759">,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="47.2941" x="1174.4502" y="1650.0759">Filtering</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.484" x="1221.7442" y="1650.0759">,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="61.5291" x="1228.6082" y="1650.0759">Anisotropy</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="30.186" x="1290.1373" y="1650.0759">, and</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="89.8041" x="1104.3931" y="1667.7819">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.8762" y="1609.1538"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="132.5169" x="935.8762" y="1631.9819">createTextureSampler()</text><rect fill="none" height="142.598" style="stroke:#FFFFFF;stroke-width:1.5;" width="501.2798" x="948.6064" y="1698.5909"/><path d="M1001.8802,1698.5909 L1001.8802,1710.6588 L991.8802,1720.6588 L948.6064,1720.6588 " 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="43.2738" x="951.6064" y="1714.5569">Model</text><path d="M1065.6629,1730.6588 L1065.6629,1775.9239 L1045.6629,1779.9239 L1065.6629,1783.9239 L1065.6629,1829.1889 A0,0 0 0 0 1065.6629,1829.1889 L1439.8862,1829.1889 A0,0 0 0 0 1439.8862,1829.1889 L1439.8862,1740.6588 L1429.8862,1730.6588 L1065.6629,1730.6588 A0,0 0 0 0 1065.6629,1730.6588 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1429.8862,1730.6588 L1429.8862,1740.6588 L1439.8862,1740.6588 L1429.8862,1730.6588 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="330.9412" x="1071.6629" y="1749.5559">Exactly what it sounds like, as of now, call our function</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="349.8433" x="1071.6629" y="1767.2619">to load .OBJ files with STB. Obviously want to support FBX</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="275.3403" x="1071.6629" y="1784.9679">in the future but the format is quite complex.</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="332.0723" x="1071.6629" y="1802.6739">This function simply loads vertices and indices into the</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="121.9141" x="1071.6629" y="1820.3799">arrays to be parsed!</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="87.0565" x="958.6064" y="1761.7518"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="67.0565" x="968.6064" y="1784.5799">loadModel()</text><rect fill="none" height="488.1882" style="stroke:#FFFFFF;stroke-width:1.5;" width="631.9444" x="903.4501" y="1851.1889"/><path d="M964.4799,1851.1889 L964.4799,1863.2568 L954.4799,1873.2568 L903.4501,1873.2568 " 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="906.4501" y="1867.1549">Buffers</text><path d="M1089.177,1883.2568 L1089.177,1910.8159 L1069.177,1914.8159 L1089.177,1918.8159 L1089.177,1946.3749 A0,0 0 0 0 1089.177,1946.3749 L1441.1572,1946.3749 A0,0 0 0 0 1441.1572,1946.3749 L1441.1572,1893.2568 L1431.1572,1883.2568 L1089.177,1883.2568 A0,0 0 0 0 1089.177,1883.2568 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1431.1572,1883.2568 L1431.1572,1893.2568 L1441.1572,1893.2568 L1431.1572,1883.2568 " 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="1095.177" y="1902.1539">Vertex buffers are incredibly useful, in essence,</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="330.9802" x="1095.177" y="1919.8599">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="1095.177" y="1937.5659">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="935.0922" y="1896.6438"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="114.0848" x="945.0922" y="1919.4719">createVertexBuffer()</text><path d="M1086.981,1956.3749 L1086.981,1992.7869 L1066.981,1996.7869 L1086.981,2000.7869 L1086.981,2037.199 A0,0 0 0 0 1086.981,2037.199 L1408.2163,2037.199 A0,0 0 0 0 1408.2163,2037.199 L1408.2163,1966.3749 L1398.2163,1956.3749 L1086.981,1956.3749 A0,0 0 0 0 1086.981,1956.3749 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1398.2163,1956.3749 L1398.2163,1966.3749 L1408.2163,1966.3749 L1398.2163,1956.3749 " 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.981" y="1975.2719">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.981" y="1992.9779">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.981" y="2010.6839">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.981" y="2028.39">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="937.2883" y="1978.6149"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109.6928" x="947.2883" y="2001.443">createIndexBuffer()</text><path d="M1094.4151,2047.199 L1094.4151,2083.611 L1074.4151,2087.611 L1094.4151,2091.611 L1094.4151,2128.023 A0,0 0 0 0 1094.4151,2128.023 L1456.4704,2128.023 A0,0 0 0 0 1456.4704,2128.023 L1456.4704,2057.199 L1446.4704,2047.199 L1094.4151,2047.199 A0,0 0 0 0 1094.4151,2047.199 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1446.4704,2047.199 L1446.4704,2057.199 L1456.4704,2057.199 L1446.4704,2047.199 " 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="1100.4151" y="2066.096">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="1100.4151" y="2083.802">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="1100.4151" y="2101.508">when the fence lets us write data.</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="24.791" x="1100.4151" y="2119.214">(see</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="158.6651" x="1128.5861" y="2119.214">recordCommandBuffer()</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="7.384" x="1287.2512" y="2119.214">).</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.8542" y="2069.4389"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="124.5609" x="939.8542" y="2092.267">createUniformBuffer()</text><path d="M1095.3391,2138.023 L1095.3391,2165.582 L1075.3391,2169.582 L1095.3391,2173.582 L1095.3391,2201.1411 A0,0 0 0 0 1095.3391,2201.1411 L1474.9574,2201.1411 A0,0 0 0 0 1474.9574,2201.1411 L1474.9574,2148.023 L1464.9574,2138.023 L1095.3391,2138.023 A0,0 0 0 0 1095.3391,2138.023 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1464.9574,2138.023 L1464.9574,2148.023 L1474.9574,2148.023 L1464.9574,2138.023 " 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="1101.3391" y="2156.92">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="1101.3391" y="2174.6261">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="1101.3391" y="2192.3321">structure as command buffers &amp; 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.9302" y="2151.41"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="126.4089" x="938.9302" y="2174.2381">createDescriptorPool()</text><path d="M1110.8192,2211.1411 L1110.8192,2265.2591 L1090.8192,2269.2591 L1110.8192,2273.2591 L1110.8192,2327.3772 A0,0 0 0 0 1110.8192,2327.3772 L1525.3945,2327.3772 A0,0 0 0 0 1525.3945,2327.3772 L1525.3945,2221.1411 L1515.3945,2211.1411 L1110.8192,2211.1411 A0,0 0 0 0 1110.8192,2211.1411 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1515.3945,2211.1411 L1515.3945,2221.1411 L1525.3945,2221.1411 L1515.3945,2211.1411 " 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.8192" y="2230.0381">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="1199.5253" y="2230.0381">layouts</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacing" textLength="228.6702" x="1248.1713" y="2230.0381">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.8192" y="2247.7441">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.8192" y="2265.4501">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.8192" y="2283.1561">These differ from Vertex &amp; 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.8192" y="2300.8622">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.8192" y="2318.5682">therefore necessary. (see</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="145.3401" x="1273.7163" y="2318.5682">createDescriptorSets()</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.9" x="1419.0564" y="2318.5682">)</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="177.3691" x="913.4501" y="2251.0871"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="157.3691" x="923.4501" y="2273.9152">createDescriptorSetLayout()</text><path d="M1129.9413,2349.3772 L1129.9413,2376.9362 L1109.9413,2380.9362 L1129.9413,2384.9362 L1129.9413,2412.4952 A0,0 0 0 0 1129.9413,2412.4952 L1453.9196,2412.4952 A0,0 0 0 0 1453.9196,2412.4952 L1453.9196,2359.3772 L1443.9196,2349.3772 L1129.9413,2349.3772 A0,0 0 0 0 1129.9413,2349.3772 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1443.9196,2349.3772 L1443.9196,2359.3772 L1453.9196,2359.3772 L1443.9196,2349.3772 " 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.9413" y="2368.2742">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.9413" y="2385.9802">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.9413" y="2403.6862">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="894.328" y="2362.7641"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="52.6564" x="904.328" y="2385.5922">Graphics</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="142.957" x="956.9843" y="2385.5922">::createCommandBuffer()</text><path d="M1132.5333,2422.4952 L1132.5333,2450.0542 L1112.5333,2454.0542 L1132.5333,2458.0542 L1132.5333,2485.6133 A0,0 0 0 0 1132.5333,2485.6133 L1495.7196,2485.6133 A0,0 0 0 0 1495.7196,2485.6133 L1495.7196,2432.4952 L1485.7196,2422.4952 L1132.5333,2422.4952 A0,0 0 0 0 1132.5333,2422.4952 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1485.7196,2422.4952 L1485.7196,2432.4952 L1495.7196,2432.4952 L1485.7196,2422.4952 " 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="1138.5333" y="2441.3922">This is</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="55.1591" x="1179.7174" y="2441.3922">HEAVILY</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="202.9172" x="1238.2565" y="2441.3922">documented, create Semaphores</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="338.8062" x="1138.5333" y="2459.0983">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="1138.5333" y="2476.8043">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.7359" y="2435.8822"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="89.2567" x="901.7359" y="2458.7103">RenderPresent</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="111.5408" x="990.9926" y="2458.7103">::createSyncObject()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="1008.1671" y1="2505.6133" y2="2505.6133"/><ellipse cx="1008.1671" cy="2536.6133" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1008.1671" cy="2536.6133" 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.9228" y="1252.0736"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="88.9806" x="1591.9228" y="1274.9017">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="1545.3945" y="1323.4177"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="162.0371" x="1555.3945" y="1346.2458">RenderPresent::drawFrame()</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="84.3324" x="1594.2469" y="1167.7295"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1599.2469" x2="1599.2469" y1="1167.7295" y2="1204.0736"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1673.5793" x2="1673.5793" y1="1167.7295" y2="1204.0736"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="64.3324" x="1604.2469" y="1190.5576">mainLoop()</text><polygon fill="#313139" points="1563.3241,1407.7618,1709.502,1407.7618,1721.502,1419.7618,1709.502,1431.7618,1563.3241,1431.7618,1551.3241,1419.7618,1563.3241,1407.7618" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="146.1779" x="1563.3241" y="1424.0298">!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.7967" y="1466.7618"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="113.2328" x="1579.7967" y="1489.5899">vkDeviceWaitIdle(...)</text><ellipse cx="1636.4131" cy="1549.106" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1636.4131" cy="1549.106" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><path d="M1879.4602,1277.0397 L1879.4602,1295.7457 L1859.4602,1299.7457 L1879.4602,1303.7457 L1879.4602,1322.4517 A0,0 0 0 0 1879.4602,1322.4517 L2155.4555,1322.4517 A0,0 0 0 0 2155.4555,1322.4517 L2155.4555,1287.0397 L2145.4555,1277.0397 L1879.4602,1277.0397 A0,0 0 0 0 1879.4602,1277.0397 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M2145.4555,1277.0397 L2145.4555,1287.0397 L2155.4555,1287.0397 L2145.4555,1277.0397 " 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="1885.4602" y="1295.9367">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="1885.4602" y="1313.6427">destroy functions, safely stopping execution</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.484" x="2136.9715" y="1313.6427">;</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="72.9444" x="1786.5159" y="1281.5736"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1791.5159" x2="1791.5159" y1="1281.5736" y2="1317.9177"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1854.4602" x2="1854.4602" y1="1281.5736" y2="1317.9177"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="52.9444" x="1796.5159" y="1304.4017">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="1753.4316" y="1357.4517"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="119.1128" x="1763.4316" y="1380.2798">return EXIT_SUCCESS</text><ellipse cx="1822.9881" cy="1439.7958" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1822.9881" cy="1439.7958" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1072.7277" x2="1072.7277" y1="87.412" y2="107.412"/><polygon fill="#E7E7E7" points="1068.7277,97.412,1072.7277,107.412,1076.7277,97.412,1072.7277,101.412" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1197.5146" y2="1232.5146"/><polygon fill="#E7E7E7" points="403.8729,1222.5146,407.8729,1232.5146,411.8729,1222.5146,407.8729,1226.5146" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1268.8587" y2="1303.8587"/><polygon fill="#E7E7E7" points="403.8729,1293.8587,407.8729,1303.8587,411.8729,1293.8587,407.8729,1297.8587" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1340.2028" y2="1375.2028"/><polygon fill="#E7E7E7" points="403.8729,1365.2028,407.8729,1375.2028,411.8729,1365.2028,407.8729,1369.2028" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1411.5469" y2="1459.9339"/><polygon fill="#E7E7E7" points="403.8729,1449.9339,407.8729,1459.9339,411.8729,1449.9339,407.8729,1453.9339" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1496.278" y2="1544.665"/><polygon fill="#E7E7E7" points="403.8729,1534.665,407.8729,1544.665,411.8729,1534.665,407.8729,1538.665" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1238.4016" y2="1273.4016"/><polygon fill="#E7E7E7" points="686.7627,1263.4016,690.7627,1273.4016,694.7627,1263.4016,690.7627,1267.4016" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1309.7457" y2="1344.7457"/><polygon fill="#E7E7E7" points="686.7627,1334.7457,690.7627,1344.7457,694.7627,1334.7457,690.7627,1338.7457" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1397.4339" y2="1432.4339"/><polygon fill="#E7E7E7" points="686.7627,1422.4339,690.7627,1432.4339,694.7627,1422.4339,690.7627,1426.4339" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1468.778" y2="1503.778"/><polygon fill="#E7E7E7" points="686.7627,1493.778,690.7627,1503.778,694.7627,1493.778,690.7627,1497.778" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1540.1221" y2="1575.1221"/><polygon fill="#E7E7E7" points="686.7627,1565.1221,690.7627,1575.1221,694.7627,1565.1221,690.7627,1569.1221" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1182.0574" y2="1202.0574"/><polygon fill="#E7E7E7" points="686.7627,1192.0574,690.7627,1202.0574,694.7627,1192.0574,690.7627,1196.0574" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1611.4662" y2="1631.4662"/><polygon fill="#E7E7E7" points="686.7627,1621.4662,690.7627,1631.4662,694.7627,1621.4662,690.7627,1625.4662" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1145.5574" y2="1180.5574"/><polygon fill="#E7E7E7" points="686.7627,1170.5574,690.7627,1180.5574,694.7627,1170.5574,690.7627,1174.5574" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="393.2434" y2="448.8703"/><polygon fill="#E7E7E7" points="998.1346,438.8703,1002.1346,448.8703,1006.1346,438.8703,1002.1346,442.8703" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="485.2144" y2="532.4544"/><polygon fill="#E7E7E7" points="998.1346,522.4544,1002.1346,532.4544,1006.1346,522.4544,1002.1346,526.4544" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="568.7985" y2="605.5725"/><polygon fill="#E7E7E7" points="998.1346,595.5725,1002.1346,605.5725,1006.1346,595.5725,1002.1346,599.5725" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="641.9166" y2="687.5435"/><polygon fill="#E7E7E7" points="998.1346,677.5435,1002.1346,687.5435,1006.1346,677.5435,1002.1346,681.5435" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="296.4444" y2="356.8993"/><polygon fill="#E7E7E7" points="998.1346,346.8993,1002.1346,356.8993,1006.1346,346.8993,1002.1346,350.8993" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="723.8876" y2="772.6616"/><polygon fill="#E7E7E7" points="998.1346,762.6616,1002.1346,772.6616,1006.1346,762.6616,1002.1346,766.6616" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="809.0057" y2="854.6326"/><polygon fill="#E7E7E7" points="998.1346,844.6326,1002.1346,854.6326,1006.1346,844.6326,1002.1346,848.6326" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1005.0157" y2="1041.7896"/><polygon fill="#E7E7E7" points="998.1346,1031.7896,1002.1346,1041.7896,1006.1346,1031.7896,1002.1346,1035.7896" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="890.9767" y2="968.6716"/><polygon fill="#E7E7E7" points="998.1346,958.6716,1002.1346,968.6716,1006.1346,958.6716,1002.1346,962.6716" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1078.1338" y2="1159.9077"/><polygon fill="#E7E7E7" points="998.1346,1149.9077,1002.1346,1159.9077,1006.1346,1149.9077,1002.1346,1153.9077" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1196.2518" y2="1249.1727"/><polygon fill="#E7E7E7" points="998.1346,1239.1727,1002.1346,1249.1727,1006.1346,1239.1727,1002.1346,1243.1727" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1422.7028" y2="1493.3298"/><polygon fill="#E7E7E7" points="998.1346,1483.3298,1002.1346,1493.3298,1006.1346,1483.3298,1002.1346,1487.3298" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1529.6739" y2="1609.1538"/><polygon fill="#E7E7E7" points="998.1346,1599.1538,1002.1346,1609.1538,1006.1346,1599.1538,1002.1346,1603.1538" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1285.5169" y2="1386.3587"/><polygon fill="#E7E7E7" points="998.1346,1376.3587,1002.1346,1386.3587,1006.1346,1376.3587,1002.1346,1380.3587" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1645.4979" y2="1761.7518"/><polygon fill="#E7E7E7" points="998.1346,1751.7518,1002.1346,1761.7518,1006.1346,1751.7518,1002.1346,1755.7518" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1932.9879" y2="1978.6149"/><polygon fill="#E7E7E7" points="998.1346,1968.6149,1002.1346,1978.6149,1006.1346,1968.6149,1002.1346,1972.6149" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="2014.959" y2="2069.4389"/><polygon fill="#E7E7E7" points="998.1346,2059.4389,1002.1346,2069.4389,1006.1346,2059.4389,1002.1346,2063.4389" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="2105.783" y2="2151.41"/><polygon fill="#E7E7E7" points="998.1346,2141.41,1002.1346,2151.41,1006.1346,2141.41,1002.1346,2145.41" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="2187.7541" y2="2251.0871"/><polygon fill="#E7E7E7" points="998.1346,2241.0871,1002.1346,2251.0871,1006.1346,2241.0871,1002.1346,2245.0871" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="1798.0959" y2="1896.6438"/><polygon fill="#E7E7E7" points="998.1346,1886.6438,1002.1346,1896.6438,1006.1346,1886.6438,1002.1346,1890.6438" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="2287.4312" y2="2362.7641"/><polygon fill="#E7E7E7" points="998.1346,2352.7641,1002.1346,2362.7641,1006.1346,2352.7641,1002.1346,2356.7641" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="2399.1083" y2="2435.8822"/><polygon fill="#E7E7E7" points="998.1346,2425.8822,1002.1346,2435.8822,1006.1346,2425.8822,1002.1346,2429.8822" 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="1109.2133"/><polygon fill="#E7E7E7" points="686.7627,1099.2133,690.7627,1109.2133,694.7627,1099.2133,690.7627,1103.2133" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="241.6003" y2="260.1003"/><polygon fill="#E7E7E7" points="998.1346,250.1003,1002.1346,260.1003,1006.1346,250.1003,1002.1346,254.1003" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1632.9662" y2="2505.6133"/><polygon fill="#E7E7E7" points="686.7627,2495.6133,690.7627,2505.6133,694.7627,2495.6133,690.7627,2499.6133" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1002.1346" x2="1002.1346" y1="2472.2263" y2="2505.6133"/><polygon fill="#E7E7E7" points="998.1346,2495.6133,1002.1346,2505.6133,1006.1346,2495.6133,1002.1346,2499.6133" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1008.1671" x2="1008.1671" y1="220.1003" y2="240.1003"/><polygon fill="#E7E7E7" points="1004.1671,230.1003,1008.1671,240.1003,1012.1671,230.1003,1008.1671,234.1003" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1008.1671" x2="1008.1671" y1="2507.1133" y2="2525.6133"/><polygon fill="#E7E7E7" points="1004.1671,2515.6133,1008.1671,2525.6133,1012.1671,2515.6133,1008.1671,2519.6133" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1636.4131" x2="1636.4131" y1="1288.4177" y2="1323.4177"/><polygon fill="#E7E7E7" points="1632.4131,1313.4177,1636.4131,1323.4177,1640.4131,1313.4177,1636.4131,1317.4177" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1636.4131" x2="1636.4131" y1="1204.0736" y2="1252.0736"/><polygon fill="#E7E7E7" points="1632.4131,1242.0736,1636.4131,1252.0736,1640.4131,1242.0736,1636.4131,1246.0736" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1721.502" x2="1739.4316" y1="1419.7618" y2="1419.7618"/><polygon fill="#E7E7E7" points="1735.4316,1312.8317,1739.4316,1302.8317,1743.4316,1312.8317,1739.4316,1308.8317" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1739.4316" x2="1739.4316" y1="1185.9016" y2="1419.7618"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1739.4316" x2="1678.5793" y1="1185.9016" y2="1185.9016"/><polygon fill="#E7E7E7" points="1688.5793,1181.9016,1678.5793,1185.9016,1688.5793,1189.9016,1684.5793,1185.9016" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1636.4131" x2="1636.4131" y1="1359.7618" y2="1407.7618"/><polygon fill="#E7E7E7" points="1632.4131,1397.7618,1636.4131,1407.7618,1640.4131,1397.7618,1636.4131,1401.7618" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1636.4131" x2="1636.4131" y1="1431.7618" y2="1466.7618"/><polygon fill="#E7E7E7" points="1632.4131,1456.7618,1636.4131,1466.7618,1640.4131,1456.7618,1636.4131,1460.7618" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1636.4131" x2="1636.4131" y1="1503.106" y2="1538.106"/><polygon fill="#E7E7E7" points="1632.4131,1528.106,1636.4131,1538.106,1640.4131,1528.106,1636.4131,1532.106" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1822.9881" x2="1822.9881" y1="1317.9177" y2="1357.4517"/><polygon fill="#E7E7E7" points="1818.9881,1347.4517,1822.9881,1357.4517,1826.9881,1347.4517,1822.9881,1351.4517" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1822.9881" x2="1822.9881" y1="1393.7958" y2="1428.7958"/><polygon fill="#E7E7E7" points="1818.9881,1418.7958,1822.9881,1428.7958,1826.9881,1418.7958,1822.9881,1422.7958" 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="1161.1705"/><polygon fill="#E7E7E7" points="403.8729,1151.1705,407.8729,1161.1705,411.8729,1151.1705,407.8729,1155.1705" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1008.1671" x2="1008.1671" y1="165.2561" y2="183.7561"/><polygon fill="#E7E7E7" points="1004.1671,173.7561,1008.1671,183.7561,1012.1671,173.7561,1008.1671,177.7561" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1636.4131" x2="1636.4131" y1="165.2561" y2="1167.7295"/><polygon fill="#E7E7E7" points="1632.4131,1157.7295,1636.4131,1167.7295,1640.4131,1157.7295,1636.4131,1161.7295" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1822.9881" x2="1822.9881" y1="165.2561" y2="1281.5736"/><polygon fill="#E7E7E7" points="1818.9881,1271.5736,1822.9881,1281.5736,1826.9881,1271.5736,1822.9881,1275.5736" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1072.7277" x2="1072.7277" y1="143.7561" y2="163.7561"/><polygon fill="#E7E7E7" points="1068.7277,153.7561,1072.7277,163.7561,1076.7277,153.7561,1072.7277,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="900.2215" y="2562.5792">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.6475" y="2581.6471">This dictates basic flow of the vulkan boilerplate system.</text><!--SRC=[ZLbTSzks4dtthu3xaEjeLEhT_PY97IVrdMJYgModVRe3aP28c2Hu0LAosib_xzbTWAHiEMadCxN41R0VPyyUK9tjAgC-QjkegqUJzvrrpKckM_g_Eb5giPZD-Ab9JzNQkrfrfL6-nuU-oVbRcD1tfkdyldMswMQpnI9kS5lQe0gRTxepGQrqiBbQLswdt9eNRVlgGJTgvMnbV5l1IeLzw4oTATx5D4LqwUJad3QiuT7PQthsa_hvvzQxt1IzDx_-Ae_XsF6deQri9pQsiTrdsnHkzy96csgzkuRHsUkVJivtRAb-KVJjfJTmCIxEiWm6ZOFFbLbt7B4OgBX8DuMYqwokx5z65MQj-wfJmNITRJP1ugCDvCobYNxT1UDlA9F6Fpr5AWDBJbyFmn-nhMrCeLfPaL8hFXmvuvtNjLdrwxNnIxXrgQjgfVE7uoTn0V5FgppQgSufRuBz2o4yEukMx0pRSlG85KjNpbMqhFEzcQjTQVDImMfZkhY4J3ryibN1-uMTRbLU4lfsfMbuOJO99NIkbP8glO7LMDXx1jHtCP1pdQwRqEacDzyqdytUmhFDR7P-dfScVxXhz5RRIgygSu-w5fhG-K7lZGyCcDdi_k5DYxKvFxbkrcusKxfjwQ-_l_v43d1Qv1k53VHSYTzgYrsmQBvOg9F5ughPeBBfIqveWzhD-Q-E-XTUFplnCiR6v-R31pvw_9YrJvm4n5z5ds38CP-VIt_o1o2dRy_63UQnUMrC8c8tL77Esa5j9XaCj0b_-cX2CCq62Bz_I7LubV3dxQRipXKVYRQ1kQgJ_Lor7a3dl16eSjS4LvcJarPxv8GIzGETkBMvkNGW9LVDPZ-elrFmozwlDMe-WJiV1o0os0TUAv7b2gmbFQcMp4lg6ZssyJgnfEuxL-CJ8NwlTEvT28g8RErypOo7peIfODiqM-jTKuChCop-1Vyn_Y-866c7EU0V6mxrNeNEQt4cDbhqvUavqXgAUqEfyzRc3pVbdlUKHCHebJg8Lwchfg-D9yhgIk_wJQdUtzpz9oHEPniXPCPSNZeN3961grj4ZHv0S2PZknWDnHENh_iEhHHZ2gNhgs4BUdnnjRmbeCiQ73mdzzINFWYxhQt7NzWVdtH7IHcFpJAcZcdKKjuFRlFziACHe4LM52w8ar019klACVGs9Z4QSWw4ReFwVszw4uxwi0HzNH9xlNG-6IYsGA4zytX1M1R8AI5dvNODEh-qhJXZcxNNG4IVKrOpTM68WHC6q6oD2m0YDa50NP15bB7KvM62BjKYO9DtcEuQ5h64t03CWO7DVhjwSt_zuKzLkBmdq9eYEnhmTQqtvjwQNNWfuiaSeM6GccoEDDgE41KikS6sXGcvjst2lQNDWs1WPp5OLeR0j6kehr0g0IaSCSsfkWRhL06iQb3HcWkrM9GqcoY_EkV8gBwywpIOhoV4LE-zRZ6V0jCzn_OxB32ETGWlKWOd3KDz7wEO8_yq-e82VGs7gHM-BKmBW15nD3BgSbSvFpuwLGTSW2P0RH6uz3_M5HRSYcbJnBpCXpDNFNgaRfq7btQd8o4WgWi6r2Iejp75peDZCRnSpsfd34qzeqDPI1NiDFVzEYcEmBETnZRsCmKvoTpC1KDBmPsvC0grC1YHqhDZDa0fUHD2CZR1KYJoHo0G55lN2B9sXQdK5j3YZE795oF-R7NLK_ZqDUKJ0x76hDJUadlP6F_1N1ZhIoDX073w-iQsfW9g_WsCAUkFOtuut8rZf0gL6WpkVUJGphI9mpq3IhNngAIJ19P96o9ngHUiPnGeeo6RQADJQEFOcPZmt-lDIrVNEE86RVTILD64QJyA4M8b8cCH_oX47wX68ng0q4WnVxeUdBCr8WnpvmNOhWqAkEBoqoCY7E8f7jbydYnFPBUYmgAUBHmD2i-fPMYZsjGEUMIEf3p8Wf0zRzvRyqZKE8KvMkft4rplqVZVG_ZpZYNSXR50T7gS3TB7w0U6RenXPF0O3KQuGsB8QODR3zOvh1-2FMpIvzGpKUhX-tebDUXwiefT9Z4-nCH5OwnIYNc8yUX19mxKCbUCt6DaSjXDGy8FcYb-oqFXx0dUrDX6umMIpn7yj_RHL45kcheHbu69NXxNSH0IbSUa2m7ahhL6J6Hj14qqxSIZKrx-Xjbs68o6M2ZNW1UH5IMbTbigAksxnbIXloi71zoQrylMmhSolR1stLV7ss-Q39gGPo_IoX6c7L4uO2-6CXUP53i8sfBCHHoeqbK5EGt1mCE3xmuhKFpX1fLz48wf-F8oLpMKHWNIgYAhcYx_PanBLWx-NqI4l-bwXjK5nDiUh3LWAnFJ8GPU7NrKGKwO7mbbHn16SGltHBEbjGuN2jP1udCH3qhoRI1QIaFIe7VtdtdYB1PpV7fdAqmt6Cd7DuqD3jU9Ta-V1_vQB3xQjeQUeuNXK9L-FMoNZpJCXcQfd2xuc-CzSlK8wOyx1GTAUiBrHD7aBaudD6B9RYvtRH3Sc6r9WrDqWCe-NVmNIfekCfodvUr5fZwjjjRrWNQFx1pwbWgYtbtyaTJcHC8prYTgn8Q8_3W5ioCrPrcoPoS2yKd7IbjUYHH9TRknRjfxlG-HYf0sqFtfDt8vI9e3whd7EUPHdXrFgrYa8SBzFW8pTZAh5RvlvcREgsYGvU0Z75A8kfcoZ9O0iQrjshwBSeWNnkz3gMdcuwP5z0_wfUkbBtAKN_OxFQwheHHUY8Ptv-S7iP2wdikBDj6GoNFMPg95N6t6WeXAOp7MK77f6akpe1_OKQf3ZEcR9FOWiffDJ-_hidYxWm10g-rp0fgEkGxm0M1DKYaDHM- -E9nzFEIxnXB8lX7qHoqZEWxTz1uWrkBibeKe4U5hAenEAfNNyhkfXieiRhE1DzY7QaqzjKE1MChiF04yxIwh-LqKjG5RLwmNmiHI-k0i60E-4oqKjLMAPpPxVPnJHqNEIkrOuB-HPnI1l6JKB9Kuz6TYYTeCfNHKGIb5IxVRD4IAuJ0MDgVK5Gdymyq4v9lU0AHB9-KhYRU4kbUYsBuNrS4zurbeYyNR0vUGlegjqU3mtUHslPVfjMyDSvzFgYvUwkYb09ClRROIuuqeAjpVazZECFqFWoSk8rkGRGz3YMhO23Rfe2ZmgUOhec8UFiDMmcmjRebqCskok0F064XOCLAPCYB_l3hiNMPqkB4VX7VVM8YpHEMJQC8ac2Ld9bxlAIlKQf3hQXkoqTv6eKxSOm01760ePThlimJM8-KAZDP32ZugKvz0_AZ8Zbac2cz4ASlbTxYR2AeTPls9OhBYA-5e4_WgQKCvlKliIbk92jffsudcGL-mgirYyYcXB6VD6fco_EfjAhlZ_HvbDlJJHGfgkM_oJqnOPo_T-O_VmkQfFvS6gg14kaEyxhyZra2fgGjBNNL9P8QE1Xi-3B-qJ1Wytcsz9k_fPIUzqAm8JR6Ntz_SJGAQl89z-exScnP-gU5db0_EjSVVVADzwRU26nnqjKLGGNhs_21Lv-U5rpk-ej3Zk3jLnAYpKrelBokN_Dxlid91RjM4gFFjWxoW-uooNUF256ytnz_hOwRefd_1ruFAnDyh9ZzDqOylegK3f9nGHoZx3eurySS7D35okXzMqIiLlJP8FRdJ7XI6thSFlwTu0qvirDKVrxV_MzvTNbujbp64iGh_0000]--></g></svg>