mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-22 12:59:07 -06:00
Added new method to get the right viewport size in stereo (side-by-side) and fix font rendering.
This commit is contained in:
@@ -56,6 +56,7 @@ public:
|
||||
glm::ivec2 currentSubwindowSize() const override;
|
||||
glm::ivec2 currentWindowResolution() const override;
|
||||
glm::ivec2 currentDrawBufferResolution() const override;
|
||||
glm::ivec2 getCurrentViewportSize() const override;
|
||||
glm::vec2 dpiScaling() const override;
|
||||
int currentNumberOfAaSamples() const override;
|
||||
|
||||
|
||||
@@ -160,6 +160,13 @@ public:
|
||||
*/
|
||||
virtual glm::ivec2 currentDrawBufferResolution() const;
|
||||
|
||||
/**
|
||||
* Returns the resolution of the currently viewport resolution in pixel
|
||||
* coordinates.
|
||||
* \return The resolution of the currently viewport in pixel coordinates
|
||||
*/
|
||||
virtual glm::ivec2 getCurrentViewportSize() const;
|
||||
|
||||
/**
|
||||
* Returns the DPI scaling factor for the current window. This is normally 1 on all
|
||||
* regular monitors and 2 on Retina screens.
|
||||
|
||||
@@ -899,23 +899,6 @@ void OpenSpaceEngine::loadFonts() {
|
||||
LERROR(fmt::format("Error registering font '{}' with key '{}'", font, key));
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
bool initSuccess = ghoul::fontrendering::FontRenderer::initialize();
|
||||
if (!initSuccess) {
|
||||
LERROR("Error initializing default font renderer");
|
||||
}
|
||||
|
||||
using FR = ghoul::fontrendering::FontRenderer;
|
||||
FR::defaultRenderer().setFramebufferSize(_renderEngine->fontResolution());
|
||||
|
||||
FR::defaultProjectionRenderer().setFramebufferSize(
|
||||
_renderEngine->renderingResolution()
|
||||
);
|
||||
}
|
||||
catch (const ghoul::RuntimeError& err) {
|
||||
LERRORC(err.component, err.message);
|
||||
}
|
||||
}
|
||||
|
||||
void OpenSpaceEngine::configureLogging(bool consoleLog) {
|
||||
@@ -1227,6 +1210,16 @@ void OpenSpaceEngine::initializeGL() {
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
bool initSuccess = ghoul::fontrendering::FontRenderer::initialize();
|
||||
if (!initSuccess) {
|
||||
LERROR("Error initializing default font renderer");
|
||||
}
|
||||
}
|
||||
catch (const ghoul::RuntimeError& err) {
|
||||
LERRORC(err.component, err.message);
|
||||
}
|
||||
|
||||
LDEBUG("Initializing Rendering Engine");
|
||||
_renderEngine->initializeGL();
|
||||
|
||||
@@ -1313,6 +1306,15 @@ void OpenSpaceEngine::postSynchronizationPreDraw() {
|
||||
bool master = _windowWrapper->isMaster();
|
||||
_syncEngine->postSynchronization(SyncEngine::IsMaster(master));
|
||||
|
||||
// This probably doesn't have to be done here every frame, but doing it earlier gives
|
||||
// weird results when using side_by_side stereo --- abock
|
||||
using FR = ghoul::fontrendering::FontRenderer;
|
||||
FR::defaultRenderer().setFramebufferSize(_renderEngine->fontResolution());
|
||||
|
||||
FR::defaultProjectionRenderer().setFramebufferSize(
|
||||
_renderEngine->renderingResolution()
|
||||
);
|
||||
|
||||
if (_shutdown.inShutdown) {
|
||||
if (_shutdown.timer <= 0.f) {
|
||||
_windowWrapper->terminate();
|
||||
|
||||
@@ -170,6 +170,17 @@ glm::ivec2 SGCTWindowWrapper::currentDrawBufferResolution() const {
|
||||
throw WindowWrapperException("No viewport available");
|
||||
}
|
||||
|
||||
glm::ivec2 SGCTWindowWrapper::getCurrentViewportSize() const {
|
||||
sgct_core::Viewport* viewport =
|
||||
sgct::Engine::instance()->getCurrentWindowPtr()->getViewport(0);
|
||||
if (viewport != nullptr) {
|
||||
int xx = 0, yy = 0;
|
||||
sgct::Engine::instance()->getCurrentViewportSize(xx, yy);
|
||||
return glm::ivec2(xx, yy);
|
||||
}
|
||||
throw WindowWrapperException("No viewport available");
|
||||
}
|
||||
|
||||
glm::vec2 SGCTWindowWrapper::dpiScaling() const {
|
||||
return glm::vec2(
|
||||
sgct::Engine::instance()->getCurrentWindowPtr()->getXScale(),
|
||||
|
||||
@@ -121,6 +121,10 @@ glm::ivec2 WindowWrapper::currentDrawBufferResolution() const {
|
||||
return currentWindowSize();
|
||||
}
|
||||
|
||||
glm::ivec2 WindowWrapper::getCurrentViewportSize() const {
|
||||
return currentWindowSize();
|
||||
}
|
||||
|
||||
glm::vec2 WindowWrapper::dpiScaling() const {
|
||||
return glm::vec2(1.f);
|
||||
}
|
||||
|
||||
@@ -537,7 +537,8 @@ glm::ivec2 RenderEngine::fontResolution() const {
|
||||
value
|
||||
);
|
||||
if (hasValue && value == "framebuffer") {
|
||||
return OsEng.windowWrapper().currentWindowResolution();
|
||||
return OsEng.windowWrapper().getCurrentViewportSize();
|
||||
//return OsEng.windowWrapper().currentWindowResolution();
|
||||
}
|
||||
else {
|
||||
// The default is to use the window size
|
||||
|
||||
Reference in New Issue
Block a user