Initial procedural 3D engine setup
- Updated README.md with modern project structure and features - Cleaned up Android build files (not needed for desktop engine) - Restructured as procedural 3D engine with ImGui integration - Based on Sascha Willems Vulkan framework with dynamic rendering - Added comprehensive build instructions and camera system docs 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
ca9be0c589
commit
09ba229353
2429 changed files with 7751 additions and 112835 deletions
98
base/foundation/VulkanUIOverlay.h
Normal file
98
base/foundation/VulkanUIOverlay.h
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* UI overlay class using ImGui
|
||||
*
|
||||
* Copyright (C) 2017-2024 by Sascha Willems - www.saschawillems.de
|
||||
*
|
||||
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <vector>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
#include "../core/VulkanTools.h"
|
||||
#include "../core/VulkanDebug.h"
|
||||
#include "../memory/VulkanBuffer.h"
|
||||
#include "../device/VulkanDevice.h"
|
||||
|
||||
#include "../external/imgui/imgui.h"
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
#include "VulkanAndroid.h"
|
||||
#endif
|
||||
|
||||
#if defined(__APPLE__)
|
||||
#include <TargetConditionals.h>
|
||||
#endif
|
||||
|
||||
namespace vks
|
||||
{
|
||||
class UIOverlay
|
||||
{
|
||||
public:
|
||||
vks::VulkanDevice* device{ nullptr };
|
||||
VkQueue queue{ VK_NULL_HANDLE };
|
||||
|
||||
VkSampleCountFlagBits rasterizationSamples{ VK_SAMPLE_COUNT_1_BIT };
|
||||
uint32_t subpass{ 0 };
|
||||
|
||||
vks::Buffer vertexBuffer;
|
||||
vks::Buffer indexBuffer;
|
||||
int32_t vertexCount{ 0 };
|
||||
int32_t indexCount{ 0 };
|
||||
|
||||
std::vector<VkPipelineShaderStageCreateInfo> shaders;
|
||||
|
||||
VkDescriptorPool descriptorPool{ VK_NULL_HANDLE };
|
||||
VkDescriptorSetLayout descriptorSetLayout{ VK_NULL_HANDLE };
|
||||
VkDescriptorSet descriptorSet{ VK_NULL_HANDLE };
|
||||
VkPipelineLayout pipelineLayout{ VK_NULL_HANDLE };
|
||||
VkPipeline pipeline{ VK_NULL_HANDLE };
|
||||
|
||||
VkDeviceMemory fontMemory{ VK_NULL_HANDLE };
|
||||
VkImage fontImage{ VK_NULL_HANDLE };
|
||||
VkImageView fontView{ VK_NULL_HANDLE };
|
||||
VkSampler sampler{ VK_NULL_HANDLE };
|
||||
|
||||
struct PushConstBlock {
|
||||
glm::vec2 scale;
|
||||
glm::vec2 translate;
|
||||
} pushConstBlock;
|
||||
|
||||
bool visible{ true };
|
||||
bool updated{ false };
|
||||
float scale{ 1.0f };
|
||||
float updateTimer{ 0.0f };
|
||||
|
||||
UIOverlay();
|
||||
~UIOverlay();
|
||||
|
||||
void preparePipeline(const VkPipelineCache pipelineCache, const VkRenderPass renderPass, const VkFormat colorFormat, const VkFormat depthFormat);
|
||||
void prepareResources();
|
||||
|
||||
bool update();
|
||||
void draw(const VkCommandBuffer commandBuffer);
|
||||
void resize(uint32_t width, uint32_t height);
|
||||
|
||||
void freeResources();
|
||||
|
||||
bool header(const char* caption);
|
||||
bool checkBox(const char* caption, bool* value);
|
||||
bool checkBox(const char* caption, int32_t* value);
|
||||
bool radioButton(const char* caption, bool value);
|
||||
bool inputFloat(const char* caption, float* value, float step, uint32_t precision);
|
||||
bool sliderFloat(const char* caption, float* value, float min, float max);
|
||||
bool sliderInt(const char* caption, int32_t* value, int32_t min, int32_t max);
|
||||
bool comboBox(const char* caption, int32_t* itemindex, std::vector<std::string> items);
|
||||
bool button(const char* caption);
|
||||
bool colorPicker(const char* caption, float* color);
|
||||
void text(const char* formatstr, ...);
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue