-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvulkan-tutorial.cpp
More file actions
82 lines (64 loc) · 2.31 KB
/
vulkan-tutorial.cpp
File metadata and controls
82 lines (64 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <cstdlib>
#include <General/GLM_impl.h>
#include "engineGlobals.h"
#include "game.h"
#include "imgui.h"
#include "backends/imgui_impl_sdl2.h"
#include "backends/imgui_impl_vulkan.h"
#include "General/InputHandling.h"
#include "Renderer/MeshCreation/MeshData.h"
#include "Renderer/TextureCreation/TextureData.h"
#include "Renderer/gltf/gltfLoading.h"
#include "Scene/Scene.h"
#include "Code/Renderer/MainRenderer/VulkanRenderer.h"
#include "General/ThreadPool.h"
#include "General/PrototypeThreadWorker.h"
void engineLoop(VulkanRenderer* renderer, Scene* scene);
std::vector<VkDescriptorSet> ImGuiExposedTextures;
int main()
{
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
io.ConfigFlags |= ImGuiConfigFlags_NavEnableSetMousePos;
ImGuiExposedTextures = {};
VulkanRenderer renderer;
MemoryArena::Allocator sceneArena = {};
MemoryArena::Initialize(&sceneArena, 3 * 1000000);
Scene scene;
InitializeScene(&sceneArena, &scene);
Add_Scene_Content(renderer.GetMainRendererContext(), renderer.AssetDataAndMemory, &scene);
auto meshletCt = VulkanRenderer::CalculateTotalDrawCount(&scene, renderer.AssetDataAndMemory->meshData.perSubmeshData.getSpan());
SceneSizeData sceneData = {.objectCount = scene.GetObjectsCount(), .totalDrawCt = meshletCt, .lightCount = scene.lightCount, .lightTypes = scene.lightTypes.getSpan()};
renderer.InitializeRendererForScene(sceneData );
renderer.InitializePipelines( scene.lightCount);
engineLoop(&renderer, &scene);
return EXIT_SUCCESS;
}
void updateImgui(bool* captureMouse)
{
ImGui_ImplVulkan_NewFrame();
ImGui_ImplSDL2_NewFrame();
ImGui::NewFrame();
//some imgui UI to test
//ImGui::ShowDemoWindow();
ImGui::Begin("js");
ImGui::Text("TEST TEST");
*captureMouse = ImGui::GetIO().WantCaptureMouse;
ImGui::End();
}
void engineLoop(VulkanRenderer* renderer, Scene* scene)
{
renderer->BeforeFirstUpdate();
while (!QUIT)
{
bool imguiCaptureMouse = false;
updateImgui(&imguiCaptureMouse);
InputHandler_Update(imguiCaptureMouse);
scene->Update();
renderer->Update(scene);
}
renderer->Cleanup();
}