diff options
Diffstat (limited to 'engine/xe_engine.cpp')
-rw-r--r-- | engine/xe_engine.cpp | 68 |
1 files changed, 24 insertions, 44 deletions
diff --git a/engine/xe_engine.cpp b/engine/xe_engine.cpp index 6de221a..ea54bb4 100644 --- a/engine/xe_engine.cpp +++ b/engine/xe_engine.cpp @@ -1,16 +1,14 @@ #include "xe_engine.hpp" -#include "xe_descriptors.hpp" +#include <chrono> -#include <string> namespace xe { -XeEngine::XeEngine(int width, int height, std::string name) - : xeWindow{width, height, name}, - xeDevice{xeWindow}, - xeRenderer{xeWindow, xeDevice}, - xeCamera{} { - loadDescriptors(); - }; +XeEngine::XeEngine(int width, int height, std::string name) : xeWindow{width, height, name}, + xeDevice{xeWindow}, + xeRenderer{xeWindow, xeDevice}, + xeCamera{} { + loadDescriptors(); +}; void XeEngine::loadDescriptors() { xeDescriptorPool = XeDescriptorPool::Builder(xeDevice) @@ -24,45 +22,27 @@ void XeEngine::loadDescriptors() { .build(); } -std::unique_ptr<XeRenderSystem> XeEngine::createRenderSystem(const std::string &vert, const std::string &frag, uint32_t pushCunstantDataSize, uint32_t uniformBufferDataSize) { - return std::make_unique<XeRenderSystem>( - xeDevice, - xeRenderer, - *xeDescriptorPool, - *xeDescriptorSetLayout, - vert, - frag, - pushCunstantDataSize, - uniformBufferDataSize - ); -} - -std::shared_ptr<XeModel> XeEngine::createModel(const std::string &filename) { +std::shared_ptr<XeModel> XeEngine::loadModelFromFile(const std::string &filename) { return XeModel::createModelFromFile(xeDevice, filename); } -void XeEngine::render( - XeRenderSystem& xeRenderSystem, - std::vector<XeGameObject>& gameObjects, - void* pushConstantData, - uint32_t pushConstantSize, - void* uniformBufferData, - uint32_t uniformBufferSize) { - - auto commandBuffer = xeRenderer.getCurrentCommandBuffer(); - xeRenderer.beginSwapChainRenderPass(commandBuffer); +std::shared_ptr<XeModel> XeEngine::loadModelFromData(std::vector<XeModel::Vertex> vertices, std::vector<uint32_t> indices) { + XeModel::Builder builder{}; + builder.vertices = vertices; + if(&indices == NULL) { + builder.indices = indices; + } + return std::make_shared<XeModel>(xeDevice, builder); +} - xeRenderSystem.renderGameObjects( - xeRenderer.getFrameIndex(), - commandBuffer, - gameObjects, - pushConstantData, - pushConstantSize, - uniformBufferData, - uniformBufferSize - ); - - xeRenderer.endSwapChainRenderPass(commandBuffer); +bool XeEngine::poll() { + glfwPollEvents(); + auto newTime = std::chrono::high_resolution_clock::now(); + frameTime = std::chrono::duration<float, std::chrono::seconds::period>(newTime - currentTime).count(); + currentTime = newTime; + float aspect = xeRenderer.getAspectRatio(); + xeCamera.setPerspectiveProjection(glm::radians(FOV), aspect, 0.1f, 100.f); + return !xeWindow.shouldClose(); } }
\ No newline at end of file |