main中创建对象,函数传参传递
parent
7558e92ab3
commit
f04da30909
|
@ -46,7 +46,7 @@ void PlumageRender::renderMain::prepare()
|
|||
{
|
||||
//VulkanExampleBase::prepare();
|
||||
|
||||
setupCamera();
|
||||
setupCamera(camera);
|
||||
|
||||
renderInput.loadAssets();
|
||||
pbrMaterial.generateBRDFLUT();
|
||||
|
@ -64,7 +64,7 @@ void PlumageRender::renderMain::prepare()
|
|||
prepared = true;
|
||||
}
|
||||
|
||||
void PlumageRender::renderMain::setupCamera()
|
||||
void PlumageRender::renderMain::setupCamera(Camera camera)
|
||||
{
|
||||
camera.type = Camera::CameraType::lookat;
|
||||
|
||||
|
@ -193,53 +193,27 @@ void PlumageRender::renderMain::render()
|
|||
fpsTimer = 0.0f;
|
||||
frameCounter = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 完全重写,避免OS specific
|
||||
/*
|
||||
PlumageRender* plumageRender;
|
||||
|
||||
#if defined(_WIN32)
|
||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (plumageRender != NULL)
|
||||
{
|
||||
plumageRender->handleMessages(hWnd, uMsg, wParam, lParam);
|
||||
}
|
||||
return (DefWindowProc(hWnd, uMsg, wParam, lParam));
|
||||
}
|
||||
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
|
||||
{
|
||||
VulkanBackend::Setter setter;
|
||||
for (int32_t i = 0; i < __argc; i++) {setter.args.push_back(__argv[i]); };
|
||||
plumageRender = new PlumageRender();
|
||||
|
||||
plumageRender->initVulkan();
|
||||
if (!plumageRender->PlumageRender::Setter::settings.headless)
|
||||
{
|
||||
plumageRender->setupWindow(hInstance, WndProc);
|
||||
}
|
||||
plumageRender->prepare();
|
||||
plumageRender->renderLoop();
|
||||
delete(plumageRender);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
PlumageRender::RenderOutput renderOutput;
|
||||
PlumageRender::RenderInput renderInput;
|
||||
PlumageRender::Setter setter;
|
||||
PlumageRender::renderMain plumageRender;
|
||||
VulkanBackend::VulkanFoundation vkFoundation;
|
||||
vkFoundation.initVulkan();
|
||||
if (!PlumageRender::Setter::settings.headless)
|
||||
if (!setter.settings.headless)
|
||||
{
|
||||
plumageRender.initWindow(PlumageRender::Setter::settings.width,PlumageRender::Setter::settings.height);
|
||||
plumageRender.initWindow(setter.settings.width,setter.settings.height);
|
||||
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include <VulkanUtils.hpp>
|
||||
#include "renderSetter.h"
|
||||
#include "vulkanFoundation.h"
|
||||
|
||||
#include <camera.hpp>
|
||||
|
||||
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
||||
#include "stb_image_write.h"
|
||||
|
@ -80,6 +80,7 @@ namespace PlumageRender
|
|||
static int32_t animationIndex;
|
||||
float animationTimer = 0.0f;
|
||||
|
||||
Camera camera;
|
||||
|
||||
|
||||
renderMain();
|
||||
|
@ -89,7 +90,7 @@ namespace PlumageRender
|
|||
static void framebufferResizeCallback(GLFWwindow* window, int width, int height);
|
||||
void windowResized();
|
||||
void prepare();
|
||||
void setupCamera();
|
||||
void setupCamera(Camera camera);
|
||||
void submitWork(VkCommandBuffer cmdBuffer, VkQueue queue);
|
||||
void submitToPresentQueue();
|
||||
|
||||
|
@ -98,15 +99,6 @@ namespace PlumageRender
|
|||
void drawFrame();
|
||||
private:
|
||||
|
||||
PlumageRender::RenderInput renderInput;
|
||||
|
||||
PlumageRender::RenderOutput renderOutput;
|
||||
|
||||
PBR::Material pbrMaterial;
|
||||
|
||||
PlumageRender::PlumageGUI renderGUI;
|
||||
|
||||
VulkanBackend::VulkanFoundation vkFoundation;
|
||||
|
||||
bool framebufferResized = false;
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include "renderSetter.h"
|
||||
|
||||
|
||||
|
||||
void PlumageRender::Setter::getSettingFromCommandLine()
|
||||
{
|
||||
// 暂定
|
||||
|
@ -51,3 +53,13 @@
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
PlumageRender::Setter::Settings PlumageRender::Setter::getSettings()
|
||||
{
|
||||
return settings ;
|
||||
}
|
||||
|
||||
PlumageRender::Setter::FilePath PlumageRender::Setter::getFilePath()
|
||||
{
|
||||
return filePath;
|
||||
}
|
|
@ -42,8 +42,9 @@ namespace PlumageRender
|
|||
uint32_t selectedPhysicalDeviceIndex = 0; // 选中的显卡,数组形式从0开始编号
|
||||
|
||||
VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // 多重采样倍率
|
||||
};
|
||||
static Settings settings;
|
||||
}settings;
|
||||
|
||||
Settings getSettings();
|
||||
|
||||
struct FilePath
|
||||
{
|
||||
|
@ -101,11 +102,13 @@ namespace PlumageRender
|
|||
std::string image2videoBatFilePath = getAssetPath() + "script/image2video.bat";
|
||||
std::string image2videoShFilePath = getAssetPath() + "script/image2video.sh";
|
||||
|
||||
};
|
||||
static FilePath filePath;
|
||||
}filePath;
|
||||
FilePath getFilePath();
|
||||
|
||||
private:
|
||||
|
||||
|
||||
|
||||
void getSettingFromCommandLine();
|
||||
|
||||
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
#include <codecvt>
|
||||
|
||||
|
||||
void PlumageRender::PlumageGUI::updateUIOverlay()
|
||||
void PlumageRender::PlumageGUI::updateUIOverlay(Setter setter)
|
||||
{
|
||||
Setter::Settings settings = setter.getSettings();
|
||||
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
|
||||
ImVec2 lastDisplaySize = io.DisplaySize;
|
||||
|
|
|
@ -31,12 +31,6 @@ namespace PlumageRender
|
|||
private:
|
||||
|
||||
|
||||
|
||||
PlumageRender::RenderInput renderInput;
|
||||
VulkanBackend::VulkanFoundation vkFoundation;
|
||||
PlumageRender::RenderOutput renderOutput;
|
||||
PlumageRender::renderMain renderMain;
|
||||
|
||||
struct GamePadState {
|
||||
glm::vec2 axisLeft = glm::vec2(0.0f);
|
||||
glm::vec2 axisRight = glm::vec2(0.0f);
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
#include "vulkanFoundation.h"
|
||||
|
||||
|
||||
void VulkanBackend::VulkanFoundation::initVulkan()
|
||||
void VulkanBackend::VulkanFoundation::initVulkan(PlumageRender::Setter setter)
|
||||
{
|
||||
// 创建instance
|
||||
createInstance();
|
||||
createInstance(setter);
|
||||
|
||||
// 设置校验层消息回调
|
||||
setupDebugMessager();
|
||||
|
@ -62,10 +62,10 @@ void VulkanBackend::VulkanFoundation::initVulkan()
|
|||
|
||||
|
||||
|
||||
void VulkanBackend::VulkanFoundation::createInstance()
|
||||
void VulkanBackend::VulkanFoundation::createInstance(PlumageRender::Setter setter)
|
||||
{
|
||||
// check validation layers
|
||||
if (PlumageRender::Setter::settings.validation && !checkValidationLayerSupport())
|
||||
if (setter.settings.validation && !checkValidationLayerSupport())
|
||||
{
|
||||
throw std::runtime_error("validation layers requsted,but not available");
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ void VulkanBackend::VulkanFoundation::createInstance()
|
|||
|
||||
// enable validation layer if available in createInfo
|
||||
VkDebugUtilsMessengerCreateInfoEXT debugCreateInfo{};
|
||||
if (PlumageRender::Setter::settings.validation)
|
||||
if (setter.settings.validation)
|
||||
{
|
||||
createInfo.enabledLayerCount = static_cast<uint32_t>(validationLayers.size());
|
||||
createInfo.ppEnabledLayerNames = validationLayers.data();
|
||||
|
@ -140,10 +140,10 @@ bool VulkanBackend::VulkanFoundation::checkValidationLayerSupport()
|
|||
return true;
|
||||
}
|
||||
|
||||
std::vector<const char*> VulkanBackend::VulkanFoundation::getRequiredExtensions()
|
||||
std::vector<const char*> VulkanBackend::VulkanFoundation::getRequiredExtensions(PlumageRender::Setter setter)
|
||||
{
|
||||
std::vector<const char*> extensions;
|
||||
if (!PlumageRender::Setter::settings.headless)
|
||||
if (!setter.settings.headless)
|
||||
{
|
||||
uint32_t glfwExtensionCount = 0;
|
||||
const char** glfwExtensions;
|
||||
|
@ -152,7 +152,7 @@ std::vector<const char*> VulkanBackend::VulkanFoundation::getRequiredExtensions(
|
|||
std::vector<const char*> extensions(glfwExtensions, glfwExtensions + glfwExtensionCount);
|
||||
}
|
||||
|
||||
if (PlumageRender::Setter::settings.validation)
|
||||
if (setter.settings.validation)
|
||||
{
|
||||
extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#include "PBR.h"
|
||||
#include "VulkanDevice.hpp"
|
||||
#include "renderUI.h"
|
||||
#include <camera.hpp>
|
||||
|
||||
|
||||
|
||||
namespace VulkanBackend
|
||||
|
@ -96,7 +96,6 @@ namespace VulkanBackend
|
|||
|
||||
const int MAX_FRAME_IN_FLIGHT = 2;
|
||||
|
||||
const int frameRange =PlumageRender::Setter::settings.endFrameIndex - PlumageRender::Setter::settings.startFrameCount;
|
||||
|
||||
static VkDevice device;
|
||||
static vks::VulkanDevice* vulkanDevice;
|
||||
|
@ -145,7 +144,7 @@ namespace VulkanBackend
|
|||
|
||||
VkQueue presentQueue;
|
||||
|
||||
void initVulkan();
|
||||
void initVulkan(PlumageRender::Setter setter);
|
||||
|
||||
// 创建描述符集合
|
||||
void createDescriptorSets();
|
||||
|
@ -215,7 +214,7 @@ namespace VulkanBackend
|
|||
|
||||
VkDescriptorPool descriptorPool;
|
||||
|
||||
Camera camera;
|
||||
|
||||
|
||||
|
||||
std::vector<VkFramebuffer> framebuffers;
|
||||
|
@ -278,9 +277,9 @@ namespace VulkanBackend
|
|||
|
||||
|
||||
// 句柄创建,检查校验层支持和获取需要的扩展
|
||||
void createInstance();
|
||||
void createInstance(PlumageRender::Setter setter);
|
||||
bool checkValidationLayerSupport();
|
||||
std::vector<const char*> getRequiredExtensions();
|
||||
std::vector<const char*> getRequiredExtensions(PlumageRender::Setter setter);
|
||||
|
||||
// 实时显示结果使用的glfwSurface,受headless配置项控制
|
||||
void createSurface();
|
||||
|
@ -375,8 +374,5 @@ namespace VulkanBackend
|
|||
{
|
||||
}
|
||||
|
||||
VulkanFoundation::~VulkanFoundation()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue