mirror of
https://github.com/bailwillharr/engine.git
synced 2024-09-21 04:51:18 +00:00
Limit to vsync by default
This commit is contained in:
parent
c56e9fcdee
commit
68d54667ec
@ -16,6 +16,7 @@ set(SRC_FILES
|
|||||||
|
|
||||||
src/systems/transform.cpp
|
src/systems/transform.cpp
|
||||||
src/systems/render.cpp
|
src/systems/render.cpp
|
||||||
|
src/systems/ui.cpp
|
||||||
src/systems/collisions.cpp
|
src/systems/collisions.cpp
|
||||||
|
|
||||||
src/resources/shader.cpp
|
src/resources/shader.cpp
|
||||||
@ -46,6 +47,7 @@ set(INCLUDE_FILES
|
|||||||
|
|
||||||
include/systems/transform.hpp
|
include/systems/transform.hpp
|
||||||
include/systems/render.hpp
|
include/systems/render.hpp
|
||||||
|
include/systems/ui.hpp
|
||||||
include/systems/collisions.hpp
|
include/systems/collisions.hpp
|
||||||
|
|
||||||
include/resources/shader.hpp
|
include/resources/shader.hpp
|
||||||
@ -73,6 +75,7 @@ set(INCLUDE_FILES
|
|||||||
include/components/transform.hpp
|
include/components/transform.hpp
|
||||||
include/components/renderable.hpp
|
include/components/renderable.hpp
|
||||||
include/components/collider.hpp
|
include/components/collider.hpp
|
||||||
|
include/components/ui_element.hpp
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(${PROJECT_NAME} STATIC
|
add_library(${PROJECT_NAME} STATIC
|
||||||
|
9
include/components/ui_element.hpp
Normal file
9
include/components/ui_element.hpp
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace engine {
|
||||||
|
|
||||||
|
struct UIElementComponent {
|
||||||
|
int n;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -20,11 +20,13 @@ namespace engine::gfx {
|
|||||||
GraphicsSettings()
|
GraphicsSettings()
|
||||||
{
|
{
|
||||||
// sane defaults
|
// sane defaults
|
||||||
vsync = false;
|
vsync = true;
|
||||||
|
waitForPresent = true; // not all GPUs/drivers support immediate present with V-sync enabled
|
||||||
msaaLevel = MSAALevel::MSAA_OFF;
|
msaaLevel = MSAALevel::MSAA_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vsync;
|
bool vsync;
|
||||||
|
bool waitForPresent; // idle CPU after render until the frame has been presented (no affect with V-sync disabled)
|
||||||
MSAALevel msaaLevel;
|
MSAALevel msaaLevel;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
19
include/systems/ui.hpp
Normal file
19
include/systems/ui.hpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ecs_system.hpp"
|
||||||
|
|
||||||
|
namespace engine {
|
||||||
|
|
||||||
|
class UISystem : public System {
|
||||||
|
|
||||||
|
public:
|
||||||
|
UISystem(Scene* scene);
|
||||||
|
|
||||||
|
void onUpdate(float ts) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -598,11 +598,13 @@ namespace engine {
|
|||||||
|
|
||||||
swapchain->presentMode = VK_PRESENT_MODE_FIFO_KHR; // This mode is always available
|
swapchain->presentMode = VK_PRESENT_MODE_FIFO_KHR; // This mode is always available
|
||||||
if (settings.vsync == true) {
|
if (settings.vsync == true) {
|
||||||
|
if (settings.waitForPresent == false) {
|
||||||
for (const auto& presMode : presentModes) {
|
for (const auto& presMode : presentModes) {
|
||||||
if (presMode == VK_PRESENT_MODE_MAILBOX_KHR) {
|
if (presMode == VK_PRESENT_MODE_MAILBOX_KHR) {
|
||||||
swapchain->presentMode = presMode; // this mode allows V-sync without fixing FPS to refresh rate
|
swapchain->presentMode = presMode; // this mode allows V-sync without fixing FPS to refresh rate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
for (const auto& presMode : presentModes) {
|
for (const auto& presMode : presentModes) {
|
||||||
if (presMode == VK_PRESENT_MODE_IMMEDIATE_KHR) {
|
if (presMode == VK_PRESENT_MODE_IMMEDIATE_KHR) {
|
||||||
|
21
src/systems/ui.cpp
Normal file
21
src/systems/ui.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include "systems/ui.hpp"
|
||||||
|
|
||||||
|
#include "components/ui_element.hpp"
|
||||||
|
|
||||||
|
#include <typeinfo>
|
||||||
|
|
||||||
|
namespace engine {
|
||||||
|
|
||||||
|
UISystem::UISystem(Scene* scene)
|
||||||
|
: System(scene, { typeid(UIElementComponent).hash_code() })
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void UISystem::onUpdate(float ts)
|
||||||
|
{
|
||||||
|
(void)ts;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -43,7 +43,7 @@ void playGame(bool enableFrameLimiter)
|
|||||||
INFO("FPS limiter: {}", enableFrameLimiter ? "ON" : "OFF");
|
INFO("FPS limiter: {}", enableFrameLimiter ? "ON" : "OFF");
|
||||||
|
|
||||||
engine::gfx::GraphicsSettings graphicsSettings{};
|
engine::gfx::GraphicsSettings graphicsSettings{};
|
||||||
graphicsSettings.vsync = false;
|
graphicsSettings.vsync = true;
|
||||||
graphicsSettings.msaaLevel = engine::gfx::MSAALevel::MSAA_OFF;
|
graphicsSettings.msaaLevel = engine::gfx::MSAALevel::MSAA_OFF;
|
||||||
engine::Application app(PROJECT_NAME, PROJECT_VERSION, graphicsSettings);
|
engine::Application app(PROJECT_NAME, PROJECT_VERSION, graphicsSettings);
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ void playGame(bool enableFrameLimiter)
|
|||||||
myScene->registerSystem<CameraControllerSystem>();
|
myScene->registerSystem<CameraControllerSystem>();
|
||||||
|
|
||||||
auto camera = myScene->createEntity("camera");
|
auto camera = myScene->createEntity("camera");
|
||||||
myScene->getComponent<engine::TransformComponent>(camera)->position.y = 8.0f;
|
myScene->getComponent<engine::TransformComponent>(camera)->position = { 0.0f, 10.0f, 0.0f };
|
||||||
auto cameraCollider = myScene->addComponent<engine::ColliderComponent>(camera);
|
auto cameraCollider = myScene->addComponent<engine::ColliderComponent>(camera);
|
||||||
cameraCollider->isStatic = false;
|
cameraCollider->isStatic = false;
|
||||||
cameraCollider->isTrigger = true;
|
cameraCollider->isTrigger = true;
|
||||||
@ -146,7 +146,7 @@ void playGame(bool enableFrameLimiter)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// cubes!
|
// cubes!
|
||||||
{
|
if (false) { // disabled
|
||||||
constexpr int SIZE = 10;
|
constexpr int SIZE = 10;
|
||||||
|
|
||||||
const uint32_t cubeParent = myScene->createEntity("cubeParent");
|
const uint32_t cubeParent = myScene->createEntity("cubeParent");
|
||||||
|
Loading…
Reference in New Issue
Block a user