Program Listing for File prismGraphicCore.h
↰ Return to documentation for file (PrismEngine/src/prismGraphicCore.h)
#pragma once
#include <vector>
#include <string>
#include <SDL.h>
#include <vulkan/vulkan.h>
#include <optional>
#include <stdexcept>
#include <utility> // для std::pair
#include <SDL_vulkan.h>
#include <memory>
#include <set>
#include <iostream>
#include <map>
#include <algorithm>
#include <chrono>
#include "config.h"
#include "logger.h"
#include "vertex.h"
#include "fmath.h"
#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm.hpp>
#include <gtc/matrix_transform.hpp>
#include "instance.h"
#include "debug.h"
#include "surface.h"
#include "physicalDevice.h"
#include "logicalDevice.h"
#include "swapChain.h"
#include "utils.h"
#include "renderPass.h"
#include "pipelineStorage.h"
#include "textureStorage.h"
#include "meshManager.h"
namespace prism {
namespace PGC {
class PrismGraphicCore {
public:
// === Деструктор и контрруктор ===
PrismGraphicCore();
void init(utils::Settings settings);
prism::PGC::utils::CameraData* getCameraDataPtr();
PGC::L1::SwapChain* getSwapChainPtr();
void cleanup();
void awaitRenderingCompletion();
bool isWindowReadyForRendering(SDL_Window* window);
bool* windowResized;
bool* windowMinimized;
PGC::utils::Settings settings;
PGC::utils::Context context;
PGC::L1::TextureStorage textureStorage;
PGC::L1::MeshManager meshManager;
private:
void createInstance();
void createDebug();
void createSurface();
void createPhysicalDevice();
void createLogicalDevice();
void createSwapChain();
void createPipelineStorage();
void createRenderPass();
void createFramebuffers();
void createCommandPool();
void createCommandBuffer();
void createSyncObjects();
void createDescriptorSetLayout();
void createTextureDescriptorSetLayout();
void createTextureDescriptorSet();
void createBufferObject();
void createDescriptorPool();
void createDescriptorSets();
void createDepthResources();
void createColorResources();
void createTextureStorage();
void createMeshManager();
SDL_Window* window;
PGC::L1::Instance instance;
PGC::L1::Debug debug;
PGC::L1::Surface surface;
PGC::L1::PhysicalDevice physicalDevice;
PGC::L1::LogicalDevice logicalDevice;
PGC::L1::SwapChain swapChain;
PGC::L1::PipelineStorage pipelineStorage;
PGC::L1::RenderPass renderPass;
VkSampleCountFlagBits getMaxUsableSampleCount();
};
} // namespace render
} // namespace prism