AgnosiaEngine/MainFlow.svg

1 line
50 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1676px" preserveAspectRatio="none" style="width:2140px;height:1676px;background:#1B1B1B;" version="1.1" viewBox="0 0 2140 1676" width="2140px" zoomAndPan="magnify"><title>Main Execution</title><defs/><g><rect fill="#1B1B1B" height="1676" style="stroke:none;stroke-width:1.0;" width="2140" x="0" y="0"/><text fill="#FFFFFF" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="107.5756" x="1015.0029" y="34.9659">Main Execution</text><rect fill="#313139" height="36.3441" rx="12.5" ry="12.5" style="stroke:#E7E7E7;stroke-width:0.5;" width="48.4642" x="1035.0586" y="51.0679"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="28.4642" x="1045.0586" y="73.896">main</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="47.6842" x="1035.4486" y="107.412"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1040.4486" x2="1040.4486" y1="107.412" y2="143.7561"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1078.1328" x2="1078.1328" 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="1045.4486" y="130.2401">run()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="407.8729" x2="1796.114" 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="712.0413"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="366.5847" x2="366.5847" y1="712.0413" y2="748.3854"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="449.1612" x2="449.1612" y1="712.0413" y2="748.3854"/><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="734.8693">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="783.3854"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="50.1483" x="382.7987" y="806.2135">glfwInit()</text><path d="M11.329,859.0485 L11.329,886.7545 A0,0 0 0 0 11.329,886.7545 L287.4283,886.7545 A0,0 0 0 0 287.4283,886.7545 L287.4283,877.0485 L307.4283,872.9015 L287.4283,869.0485 L287.4283,869.0485 L277.4283,859.0485 L11.329,859.0485 A0,0 0 0 0 11.329,859.0485 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M277.4283,859.0485 L277.4283,869.0485 L287.4283,869.0485 L277.4283,859.0485 " 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="877.9455">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="854.7295"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="180.8893" x="317.4283" y="877.5576">window = glfwCreateWindow(...)</text><path d="M27.1421,930.3926 L27.1421,958.0987 A0,0 0 0 0 27.1421,958.0987 L292.0483,958.0987 A0,0 0 0 0 292.0483,958.0987 L292.0483,948.3926 L312.0483,944.2457 L292.0483,940.3926 L292.0483,940.3926 L282.0483,930.3926 L27.1421,930.3926 A0,0 0 0 0 27.1421,930.3926 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M282.0483,930.3926 L282.0483,940.3926 L292.0483,940.3926 L282.0483,930.3926 " 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="949.2897">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="926.0736"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="171.6492" x="322.0483" y="948.9017">glfwSetWindowUserPointer(...)</text><path d="M10,997.4177 L10,1060.5358 A0,0 0 0 0 10,1060.5358 L278.8062,1060.5358 A0,0 0 0 0 278.8062,1060.5358 L278.8062,1032.9767 L298.8062,1028.9767 L278.8062,1024.9767 L278.8062,1007.4177 L268.8062,997.4177 L10,997.4177 A0,0 0 0 0 10,997.4177 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M268.8062,997.4177 L268.8062,1007.4177 L278.8062,1007.4177 L268.8062,997.4177 " 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="1016.3147">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="1034.0207">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="1051.7268">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="1010.8047"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="198.1334" x="308.8062" y="1033.6328">glfwSetFramebufferSizeCallback(...)</text><ellipse cx="407.8729" cy="1106.5358" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="407.8729" cy="1106.5358" 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="951.4718" y="183.7561"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="956.4718" x2="956.4718" y1="183.7561" y2="220.1003"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1032.9883" x2="1032.9883" 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="961.4718" y="206.5842">initVulkan()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="1001.4626" 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="660.0841"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="638.9144" x2="638.9144" y1="660.0841" y2="696.4282"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="742.611" x2="742.611" y1="660.0841" y2="696.4282"/><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="682.9122">createInstance()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="690.7627" y1="731.4282" y2="731.4282"/><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="752.9282"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="242.3177" x="569.6039" y="775.7563">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="824.2723"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="108.2527" x="608.3341" y="847.1004">VkApplicationInfo</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="53.4844" x="719.7069" y="847.1004">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="895.6164"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacing" textLength="175.1892" x="598.29" y="918.4445">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="934.7887">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="983.3047"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="147.985" x="581.5559" y="1006.1328">VkApplicationCreateInfo</text><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="67.3085" x="732.661" y="1006.1328">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="1054.6488"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="221.1255" x="580.1999" y="1077.4769">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="1125.9929"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="307.6461" x="536.9396" y="1148.821">Debug::vulkanDebugSetup(createInfo, vulkaninstance)</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="690.7627" y1="1182.337" y2="1182.337"/><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&amp;)</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="392.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">&#160;</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,699.1565 L1091.751,726.7156 L1071.751,730.7156 L1091.751,734.7156 L1091.751,762.2746 A0,0 0 0 0 1091.751,762.2746 L1422.0343,762.2746 A0,0 0 0 0 1422.0343,762.2746 L1422.0343,709.1565 L1412.0343,699.1565 L1091.751,699.1565 A0,0 0 0 0 1091.751,699.1565 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1412.0343,699.1565 L1412.0343,709.1565 L1422.0343,709.1565 L1412.0343,699.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="718.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="735.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="753.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="753.4656">how</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="120.4451" x="1286.5892" y="753.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="712.5435"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="120.5768" x="941.1742" y="735.3716">createImageViews(...)</text><rect fill="none" height="390.8341" style="stroke:#FFFFFF;stroke-width:1.5;" width="600.4923" x="908.0281" y="817.2746"/><path d="M979.4599,817.2746 L979.4599,829.3425 L969.4599,839.3425 L908.0281,839.3425 " 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="833.2405">Graphics</text><path d="M1090.665,856.3425 L1090.665,883.9015 L1070.665,887.9015 L1090.665,891.9015 L1090.665,919.4606 A0,0 0 0 0 1090.665,919.4606 L1422.7164,919.4606 A0,0 0 0 0 1422.7164,919.4606 L1422.7164,866.3425 L1412.7164,856.3425 L1090.665,856.3425 A0,0 0 0 0 1090.665,856.3425 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1412.7164,856.3425 L1412.7164,866.3425 L1422.7164,866.3425 L1412.7164,856.3425 " 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="1096.665" y="875.2395">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="1096.665" y="892.9455">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="1096.665" y="910.6516">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="138.4048" x="932.2602" y="869.7295"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="118.4048" x="942.2602" y="892.5576">createRenderPass(...)</text><path d="M1104.8971,954.4606 L1104.8971,982.0196 L1084.8971,986.0196 L1104.8971,990.0196 L1104.8971,1017.5786 A0,0 0 0 0 1104.8971,1017.5786 L1439.1064,1017.5786 A0,0 0 0 0 1439.1064,1017.5786 L1439.1064,964.4606 L1429.1064,954.4606 L1104.8971,954.4606 A0,0 0 0 0 1104.8971,954.4606 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1429.1064,954.4606 L1429.1064,964.4606 L1439.1064,964.4606 L1429.1064,954.4606 " 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="973.3576">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.0636">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="1008.7696">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="1008.7696">HEAVILY</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="81.1591" x="1296.9143" y="1008.7696">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="967.8475"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="146.869" x="928.0281" y="990.6756">createGraphicsPipeline(...)</text><path d="M1095.7591,1052.5786 L1095.7591,1071.2846 L1075.7591,1075.2846 L1095.7591,1079.2846 L1095.7591,1097.9906 A0,0 0 0 0 1095.7591,1097.9906 L1440.4983,1097.9906 A0,0 0 0 0 1440.4983,1097.9906 L1440.4983,1062.5786 L1430.4983,1052.5786 L1095.7591,1052.5786 A0,0 0 0 0 1095.7591,1052.5786 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1430.4983,1052.5786 L1430.4983,1062.5786 L1440.4983,1062.5786 L1430.4983,1052.5786 " 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="1071.4756">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="1089.1816">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.1126"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="128.5929" x="937.1662" y="1079.9407">createFramebuffers(...)</text><path d="M1099.3891,1132.9906 L1099.3891,1160.5497 L1079.3891,1164.5497 L1099.3891,1168.5497 L1099.3891,1196.1087 A0,0 0 0 0 1099.3891,1196.1087 L1498.5204,1196.1087 A0,0 0 0 0 1498.5204,1196.1087 L1498.5204,1142.9906 L1488.5204,1132.9906 L1099.3891,1132.9906 A0,0 0 0 0 1099.3891,1132.9906 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1488.5204,1132.9906 L1488.5204,1142.9906 L1498.5204,1142.9906 L1488.5204,1132.9906 " 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="1151.8877">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="1169.5937">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="1187.2997">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="1146.3776"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="135.853" x="933.5361" y="1169.2057">createCommandPool(...)</text><rect fill="none" height="198.01" style="stroke:#FFFFFF;stroke-width:1.5;" width="526.065" x="924.4202" y="1218.1087"/><path d="M985.45,1218.1087 L985.45,1230.1766 L975.45,1240.1766 L924.4202,1240.1766 " 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="927.4202" y="1234.0746">Buffers</text><path d="M1088.505,1250.1766 L1088.505,1277.7356 L1068.505,1281.7356 L1088.505,1285.7356 L1088.505,1313.2947 A0,0 0 0 0 1088.505,1313.2947 L1440.4852,1313.2947 A0,0 0 0 0 1440.4852,1313.2947 L1440.4852,1260.1766 L1430.4852,1250.1766 L1088.505,1250.1766 A0,0 0 0 0 1088.505,1250.1766 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1430.4852,1250.1766 L1430.4852,1260.1766 L1440.4852,1260.1766 L1430.4852,1250.1766 " 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="1269.0736">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="1286.7796">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="1304.4857">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="1263.5636"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="114.0848" x="944.4202" y="1286.3917">createVertexBuffer()</text><path d="M1086.309,1323.2947 L1086.309,1359.7067 L1066.309,1363.7067 L1086.309,1367.7067 L1086.309,1404.1187 A0,0 0 0 0 1086.309,1404.1187 L1407.5443,1404.1187 A0,0 0 0 0 1407.5443,1404.1187 L1407.5443,1333.2947 L1397.5443,1323.2947 L1086.309,1323.2947 A0,0 0 0 0 1086.309,1323.2947 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1397.5443,1323.2947 L1397.5443,1333.2947 L1407.5443,1333.2947 L1397.5443,1323.2947 " 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="1342.1917">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="1359.8977">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="1377.6037">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="1395.3097">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="1345.5346"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="109.6928" x="946.6162" y="1368.3627">createIndexBuffer()</text><path d="M1127.8533,1426.1187 L1127.8533,1453.6778 L1107.8533,1457.6778 L1127.8533,1461.6778 L1127.8533,1489.2368 A0,0 0 0 0 1127.8533,1489.2368 L1451.8316,1489.2368 A0,0 0 0 0 1451.8316,1489.2368 L1451.8316,1436.1187 L1441.8316,1426.1187 L1127.8533,1426.1187 A0,0 0 0 0 1127.8533,1426.1187 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1441.8316,1426.1187 L1441.8316,1436.1187 L1451.8316,1436.1187 L1441.8316,1426.1187 " 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="1133.8533" y="1445.0157">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="1133.8533" y="1462.7218">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="1133.8533" y="1480.4278">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="212.7814" x="895.0719" y="1439.5057"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="192.7814" x="905.0719" y="1462.3338">Graphics::createCommandBuffer()</text><path d="M1129.2333,1499.2368 L1129.2333,1526.7958 L1109.2333,1530.7958 L1129.2333,1534.7958 L1129.2333,1562.3548 A0,0 0 0 0 1129.2333,1562.3548 L1492.4196,1562.3548 A0,0 0 0 0 1492.4196,1562.3548 L1492.4196,1509.2368 L1482.4196,1499.2368 L1129.2333,1499.2368 A0,0 0 0 0 1129.2333,1499.2368 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M1482.4196,1499.2368 L1482.4196,1509.2368 L1492.4196,1509.2368 L1482.4196,1499.2368 " 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="1135.2333" y="1518.1338">This is</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacing" textLength="55.1591" x="1176.4174" y="1518.1338">HEAVILY</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="202.9172" x="1234.9564" y="1518.1338">documented, create Semaphores</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="338.8062" x="1135.2333" y="1535.8398">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="1135.2333" y="1553.5458">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="215.5414" x="893.6919" y="1512.6237"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="195.5414" x="903.6919" y="1535.4518">RenderPresent::createSyncObject()</text><line style="stroke:#E7E7E7;stroke-width:1.5;" x1="690.7627" x2="1001.4626" y1="1582.3548" y2="1582.3548"/><ellipse cx="994.73" cy="1613.3548" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="994.73" cy="1613.3548" 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="1555.0487" y="802.9444"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="88.9806" x="1565.0487" y="825.7725">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="1518.5204" y="874.2885"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="162.0371" x="1528.5204" y="897.1166">RenderPresent::drawFrame()</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="84.3324" x="1567.3728" y="718.6003"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1572.3728" x2="1572.3728" y1="718.6003" y2="754.9444"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1646.7052" x2="1646.7052" y1="718.6003" y2="754.9444"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="64.3324" x="1577.3728" y="741.4284">mainLoop()</text><polygon fill="#313139" points="1536.4501,958.6326,1682.628,958.6326,1694.628,970.6326,1682.628,982.6326,1536.4501,982.6326,1524.4501,970.6326,1536.4501,958.6326" style="stroke:#E7E7E7;stroke-width:0.5;"/><text fill="#FFFFFF" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="146.1779" x="1536.4501" y="974.9006">!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="1542.9226" y="1017.6326"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="113.2328" x="1552.9226" y="1040.4607">vkDeviceWaitIdle(...)</text><ellipse cx="1609.539" cy="1099.9767" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1609.539" cy="1099.9767" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><path d="M1852.5862,827.9104 L1852.5862,846.6164 L1832.5862,850.6164 L1852.5862,854.6164 L1852.5862,873.3225 A0,0 0 0 0 1852.5862,873.3225 L2128.5814,873.3225 A0,0 0 0 0 2128.5814,873.3225 L2128.5814,837.9104 L2118.5814,827.9104 L1852.5862,827.9104 A0,0 0 0 0 1852.5862,827.9104 " fill="#714137" style="stroke:#E7E7E7;stroke-width:0.5;"/><path d="M2118.5814,827.9104 L2118.5814,837.9104 L2128.5814,837.9104 L2118.5814,827.9104 " 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="1858.5862" y="846.8074">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="1858.5862" y="864.5135">destroy functions, safely stopping execution</text><text fill="#FFFFFF" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="3.484" x="2110.0974" y="864.5135">;</text><rect fill="#313139" height="36.3441" style="stroke:#E7E7E7;stroke-width:0.5;" width="72.9444" x="1759.6418" y="832.4444"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1764.6418" x2="1764.6418" y1="832.4444" y2="868.7885"/><line style="stroke:#E7E7E7;stroke-width:0.5;" x1="1827.5862" x2="1827.5862" y1="832.4444" y2="868.7885"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" font-style="italic" font-weight="bold" lengthAdjust="spacing" textLength="52.9444" x="1769.6418" y="855.2725">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="1726.5576" y="908.3225"/><text fill="#FFFFFF" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="119.1128" x="1736.5576" y="931.1506">return EXIT_SUCCESS</text><ellipse cx="1796.114" cy="990.6666" fill="none" rx="11" ry="11" style="stroke:#DDDDDD;stroke-width:1.0;"/><ellipse cx="1796.114" cy="990.6666" fill="#DDDDDD" rx="6" ry="6" style="stroke:#DDDDDD;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1059.2907" x2="1059.2907" y1="87.412" y2="107.412"/><polygon fill="#E7E7E7" points="1055.2907,97.412,1059.2907,107.412,1063.2907,97.412,1059.2907,101.412" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="748.3854" y2="783.3854"/><polygon fill="#E7E7E7" points="403.8729,773.3854,407.8729,783.3854,411.8729,773.3854,407.8729,777.3854" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="819.7295" y2="854.7295"/><polygon fill="#E7E7E7" points="403.8729,844.7295,407.8729,854.7295,411.8729,844.7295,407.8729,848.7295" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="891.0736" y2="926.0736"/><polygon fill="#E7E7E7" points="403.8729,916.0736,407.8729,926.0736,411.8729,916.0736,407.8729,920.0736" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="962.4177" y2="1010.8047"/><polygon fill="#E7E7E7" points="403.8729,1000.8047,407.8729,1010.8047,411.8729,1000.8047,407.8729,1004.8047" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="407.8729" x2="407.8729" y1="1047.1488" y2="1095.5358"/><polygon fill="#E7E7E7" points="403.8729,1085.5358,407.8729,1095.5358,411.8729,1085.5358,407.8729,1089.5358" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="789.2723" y2="824.2723"/><polygon fill="#E7E7E7" points="686.7627,814.2723,690.7627,824.2723,694.7627,814.2723,690.7627,818.2723" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="860.6164" y2="895.6164"/><polygon fill="#E7E7E7" points="686.7627,885.6164,690.7627,895.6164,694.7627,885.6164,690.7627,889.6164" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="948.3047" y2="983.3047"/><polygon fill="#E7E7E7" points="686.7627,973.3047,690.7627,983.3047,694.7627,973.3047,690.7627,977.3047" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1019.6488" y2="1054.6488"/><polygon fill="#E7E7E7" points="686.7627,1044.6488,690.7627,1054.6488,694.7627,1044.6488,690.7627,1048.6488" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1090.9929" y2="1125.9929"/><polygon fill="#E7E7E7" points="686.7627,1115.9929,690.7627,1125.9929,694.7627,1115.9929,690.7627,1119.9929" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="732.9282" y2="752.9282"/><polygon fill="#E7E7E7" points="686.7627,742.9282,690.7627,752.9282,694.7627,742.9282,690.7627,746.9282" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="1162.337" y2="1182.337"/><polygon fill="#E7E7E7" points="686.7627,1172.337,690.7627,1182.337,694.7627,1172.337,690.7627,1176.337" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="690.7627" x2="690.7627" y1="696.4282" y2="731.4282"/><polygon fill="#E7E7E7" points="686.7627,721.4282,690.7627,731.4282,694.7627,721.4282,690.7627,725.4282" 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="712.5435"/><polygon fill="#E7E7E7" points="997.4626,702.5435,1001.4626,712.5435,1005.4626,702.5435,1001.4626,706.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="906.0736" y2="967.8475"/><polygon fill="#E7E7E7" points="997.4626,957.8475,1001.4626,967.8475,1005.4626,957.8475,1001.4626,961.8475" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1004.1916" y2="1057.1126"/><polygon fill="#E7E7E7" points="997.4626,1047.1126,1001.4626,1057.1126,1005.4626,1047.1126,1001.4626,1051.1126" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1093.4567" y2="1146.3776"/><polygon fill="#E7E7E7" points="997.4626,1136.3776,1001.4626,1146.3776,1005.4626,1136.3776,1001.4626,1140.3776" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="748.8876" y2="869.7295"/><polygon fill="#E7E7E7" points="997.4626,859.7295,1001.4626,869.7295,1005.4626,859.7295,1001.4626,863.7295" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1299.9077" y2="1345.5346"/><polygon fill="#E7E7E7" points="997.4626,1335.5346,1001.4626,1345.5346,1005.4626,1335.5346,1001.4626,1339.5346" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1182.7217" y2="1263.5636"/><polygon fill="#E7E7E7" points="997.4626,1253.5636,1001.4626,1263.5636,1005.4626,1253.5636,1001.4626,1257.5636" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1381.8788" y2="1439.5057"/><polygon fill="#E7E7E7" points="997.4626,1429.5057,1001.4626,1439.5057,1005.4626,1429.5057,1001.4626,1433.5057" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1475.8498" y2="1512.6237"/><polygon fill="#E7E7E7" points="997.4626,1502.6237,1001.4626,1512.6237,1005.4626,1502.6237,1001.4626,1506.6237" 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="660.0841"/><polygon fill="#E7E7E7" points="686.7627,650.0841,690.7627,660.0841,694.7627,650.0841,690.7627,654.0841" 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="1183.837" y2="1582.3548"/><polygon fill="#E7E7E7" points="686.7627,1572.3548,690.7627,1582.3548,694.7627,1572.3548,690.7627,1576.3548" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1001.4626" x2="1001.4626" y1="1548.9679" y2="1582.3548"/><polygon fill="#E7E7E7" points="997.4626,1572.3548,1001.4626,1582.3548,1005.4626,1572.3548,1001.4626,1576.3548" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="994.73" x2="994.73" y1="220.1003" y2="240.1003"/><polygon fill="#E7E7E7" points="990.73,230.1003,994.73,240.1003,998.73,230.1003,994.73,234.1003" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="994.73" x2="994.73" y1="1583.8548" y2="1602.3548"/><polygon fill="#E7E7E7" points="990.73,1592.3548,994.73,1602.3548,998.73,1592.3548,994.73,1596.3548" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1609.539" x2="1609.539" y1="839.2885" y2="874.2885"/><polygon fill="#E7E7E7" points="1605.539,864.2885,1609.539,874.2885,1613.539,864.2885,1609.539,868.2885" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1609.539" x2="1609.539" y1="754.9444" y2="802.9444"/><polygon fill="#E7E7E7" points="1605.539,792.9444,1609.539,802.9444,1613.539,792.9444,1609.539,796.9444" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1694.628" x2="1712.5576" y1="970.6326" y2="970.6326"/><polygon fill="#E7E7E7" points="1708.5576,863.7025,1712.5576,853.7025,1716.5576,863.7025,1712.5576,859.7025" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1712.5576" x2="1712.5576" y1="736.7723" y2="970.6326"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1712.5576" x2="1651.7052" y1="736.7723" y2="736.7723"/><polygon fill="#E7E7E7" points="1661.7052,732.7723,1651.7052,736.7723,1661.7052,740.7723,1657.7052,736.7723" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1609.539" x2="1609.539" y1="910.6326" y2="958.6326"/><polygon fill="#E7E7E7" points="1605.539,948.6326,1609.539,958.6326,1613.539,948.6326,1609.539,952.6326" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1609.539" x2="1609.539" y1="982.6326" y2="1017.6326"/><polygon fill="#E7E7E7" points="1605.539,1007.6326,1609.539,1017.6326,1613.539,1007.6326,1609.539,1011.6326" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1609.539" x2="1609.539" y1="1053.9767" y2="1088.9767"/><polygon fill="#E7E7E7" points="1605.539,1078.9767,1609.539,1088.9767,1613.539,1078.9767,1609.539,1082.9767" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1796.114" x2="1796.114" y1="868.7885" y2="908.3225"/><polygon fill="#E7E7E7" points="1792.114,898.3225,1796.114,908.3225,1800.114,898.3225,1796.114,902.3225" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1796.114" x2="1796.114" y1="944.6666" y2="979.6666"/><polygon fill="#E7E7E7" points="1792.114,969.6666,1796.114,979.6666,1800.114,969.6666,1796.114,973.6666" 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="712.0413"/><polygon fill="#E7E7E7" points="403.8729,702.0413,407.8729,712.0413,411.8729,702.0413,407.8729,706.0413" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="994.73" x2="994.73" y1="165.2561" y2="183.7561"/><polygon fill="#E7E7E7" points="990.73,173.7561,994.73,183.7561,998.73,173.7561,994.73,177.7561" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1609.539" x2="1609.539" y1="165.2561" y2="718.6003"/><polygon fill="#E7E7E7" points="1605.539,708.6003,1609.539,718.6003,1613.539,708.6003,1609.539,712.6003" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1796.114" x2="1796.114" y1="165.2561" y2="832.4444"/><polygon fill="#E7E7E7" points="1792.114,822.4444,1796.114,832.4444,1800.114,822.4444,1796.114,826.4444" style="stroke:#E7E7E7;stroke-width:1.0;"/><line style="stroke:#E7E7E7;stroke-width:1.0;" x1="1059.2907" x2="1059.2907" y1="143.7561" y2="163.7561"/><polygon fill="#E7E7E7" points="1055.2907,153.7561,1059.2907,163.7561,1063.2907,153.7561,1059.2907,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="886.7844" y="1639.3208">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="879.2104" y="1658.3887">This dictates basic flow of the vulkan boilerplate system.</text><!--SRC=[ZLXTZzks4dtth-3seTqOllQxqnPet6rh84KNrydszkc2baOMinB9ajGwRj7_ViyCANzilTqR18WbpVUSEHmccTIH-baRg-u-KpKau-oaqfx_LHEb5elfLBxI-5KrmVKgjQJ2W8V1Ll8M8loER0e7xunDq-bYKGnyQ4rKjQcIJXJLLaTJgQPpU-KQKNeQkaTjrTQPZeBl8ANY8IRgvqgiaArBI9F9iaSqRoTBjei0Rj-mn5lrzTS-k8hg8T2ttqwYxqpACiQQzAknjTjV5rtkkcQ_Xj3j6rZTYwJwHl7RLI24KfJdypa4h4Di7JL9Cii2gYXfMolsPdHd_Y1LKwE7Bgb8AHcxYpaFDf1zRgZ4zJ5IkEUAKNZk9NS0abAc0OB_WbbZgLO-Qumbp35SyV53q3rjXwQXi45OAzrrMrqzNlSaZS9VhQeYfv9JWQBv0odypHUhx4ba9Nka2jMjSnshfJ3GJErRKxKAKZjAHOL50s8oNItsubvxLRMCidrBLXJdPwd4v7nkgT8xI9qQ-o30UHK3bVHfRMFIjg9_5FyUSUsMowgbwl6ZrK_QT7hRqGDwMcj6u7jze105BDFfm-Dt7dgLV5dRnasdIdlFl_xyIq0g9Sbl50pecSengoTOWT9iiL2JnUBExj3LyQKKqw9lC_cLU4OHyTyyhafUuhSwFeZhq-FSFmiIyFwonFJsc76UGNa0QWP_Up8mAmDgIW6HEt6tfM8NVIcs8XkGtpzJZ6HtGFR3urZ_BqVS1RDhqrA9EumBn5K_oi-K3m2ur8p1L3aRNLTWVJwOco4q6aqzmxFO1T84pKU2Qb7A3lIJrTH624QjCKIxe4UwqqDoFPuOqWUbg-1YLCn8ZGkzK1T63w8Pl6IVJ72s1-dDeVmD_WZ0tp73iOKPy5qc2atTnXHq3gPCKedbkP-CVINWzpgW_wppnNJwFJsPYbOE9EkwwVGBzIVyBRsf7k_RW_ZC4gKQIbtKGwaxE_GKcBDI6zomQzMFzn-_YYDvYqncNW5UrJeNYTd0zHvLmI0WUPgBNCcMyotgpP0mIoNdsBgXEvhWp-_kDXyOxLa7ZcSSdleqn4nlZGdu1VjuqecBTd8xdmjt7Ak2h3C-txlTwsaN8M2CfJXTC2UZ1bIMsbFglXIn24eDCjz6zVj00yMhCMp0NokchvVyiu0I2G0X297N3EeCIPNPMRcznVYtnkTWZ6s21cA6YgiwL- -8ANZ422REkWYWmWWIIZ4hSSN6KOzdw5CU2LELS8nhI9GMoe082KOH- -dkkuVr-zzKxQg1GKtr_6h2wrxlwC7GFhwKyTb1mgV1E8GpbD4aHbGq78R8rXIhOFmu5uQDnuo1lS79iYK6qzxotA5L6QG8XEoDMeDwkWXg9NIqbqOj5YqVJbnVNKbct5-nUfxCNvFBqVenQ8-ZAXwdAgVwRoZWUDRnrLHzm45_A8dDq18-3gC2jHtzgotUrkI1EL4LSiV7odKkd3xUg0i2mMIWuQX69erSCmFUnKbKbtBDZdwt0qQdzow0QzFDrVQDgTuRJnrgzlyqaOr_Ff6fT6Vdf4-PI0Xdrw4mI28_CboG-YbVN8rhGcxAk1fXFHYHO8AagqXZQs13DrW12ovnoBs6pBDjvvyRTimaw-75cQP4m4lDiNDbl2Hjdc1X0vbXeFFOZ9cI8hnI_fNhUvJX7eFnKeX5H8Yvx0libUaox-7mFKJcWrCUYBT4-PiRm0fFb7UtoeMCCkUZEk3J7f7n9wO4PX8vNSLVLX_fQFi9X05aUGGQ5RupWjbGJxr3ci9YNAbIjVdbU5rCrxiiycou7YWa-fo_tJwhGuubIumUf0Z6Ghd6eI0HD4Ctuoh9tb3HJBGuomerWvCwRn1oPobnWo-VibbZ_I2b6CUgl8-jPj3Ye6pn3vhEsqEeArTJjdUziMj0_OLinBfylyY5oN6MBqHvsiV8iVA6mdIkbxqmoScLML5ELikam5iA8t38h4-bXH12s_auoOkuqNOtyBrgNWvde0F7ww7YXKYNMaV4008PPxtq7qNyvE3xvhAxov54bfUeFgL_sSgHInW_Z0pBXNM5_OxpaAVHOVkRAAa1G_nCXfa2Xq9ip_6B6qONnSbU6-OJneFE8pg7O-8L9b2UJMeQKnbPs8xPB0l9uvw33sD2cuEjVf4Qt5vTBF7tEZFD2gTWiUrH8pIIrmOUhnyOefWe7ffMTnAh46BYMS73yP9z1WfPIz53pP7p7iox7-x9OeLhWqtgB9cppVpvjIcGHrnAhaHyYtxldBz-6GAaUS- -XwEx9oGLCvwV5weEUY-Cov-BTUu6gTiRrYyRkco2gmvxeF3T6xRqz9XNjb_HiZMMeCA4rwzwWAcsmmknNdIcN67F_bU2x-FCxrWvA1ZymC4Kso4XC5lkepXsKDF3KOjFKzqGIi_X-8l6y3NiUCN6YJy4g-x-i_xmtyt7rUfkioafdBhmFm00]--></g></svg>