#include "first_app.hpp" #include "simple_render_system.hpp" // libs #define GLM_FORCE_RADIANS #define GLM_FORCE_DEPTH_ZERO_TO_ONE #include #include // std #include #include namespace hk { FirstApp::FirstApp() { loadGameObjects(); } FirstApp::~FirstApp() { } void FirstApp::run() { SimpleRenderSystem simpleRenderSystem{m_device, m_renderer.getSwapChainRenderPass()}; while (!m_window.shouldClose()) { glfwPollEvents(); if (auto commandBuffer = m_renderer.beginFrame()) { m_renderer.beginSwapChainRenderPass(commandBuffer); simpleRenderSystem.renderGameObjects(commandBuffer, m_gameObjects); m_renderer.endSwapChainRenderPass(commandBuffer); m_renderer.endFrame(); } } vkDeviceWaitIdle(m_device.device()); } void FirstApp::loadGameObjects() { std::vector vertices{ {{0.0f, -0.5f}, {1.0f, 0.0f, 0.0f}}, {{0.5f, 0.5f}, {0.0f, 1.0f, 0.0f}}, {{-0.5f, 0.5f}, {0.0f, 0.0f, 1.0f}} }; auto model = std::make_shared(m_device, vertices); auto triangle = GameObject::createGameObject(); triangle.m_model = model; triangle.m_color = {.1f, .8f, .1f}; triangle.m_transform2d.translation.x = .2f; triangle.m_transform2d.scale = {2.0f, .5f}; triangle.m_transform2d.rotation = .25f * glm::two_pi(); m_gameObjects.push_back(std::move(triangle)); } } // namespace hk