Add scaling for high-dpi Windows/Linux displays

This commit is contained in:
Ryan Huffman 2015-02-18 15:09:41 -08:00
parent 51f5719e0f
commit 2828b65bea
2 changed files with 24 additions and 2 deletions

View file

@ -271,7 +271,19 @@ void ControllerScriptingInterface::releaseJoystick(int joystickIndex) {
glm::vec2 ControllerScriptingInterface::getViewportDimensions() const {
auto glCanvas = DependencyManager::get<GLCanvas>();
return glm::vec2(glCanvas->width(), glCanvas->height());
#ifdef Q_OS_MAC
const float dpiScaleX = 1.0f;
const float dpiScaleY = 1.0f;
#else
const float NATIVE_DPI = 96.0f;
const float dpiScaleX = NATIVE_DPI / glCanvas->logicalDpiX();
const float dpiScaleY = NATIVE_DPI / glCanvas->logicalDpiY();
#endif
const float width = glCanvas->width() / dpiScaleX;
const float height = glCanvas->height() / dpiScaleY;
return glm::vec2(width, height);
}
AbstractInputController* ControllerScriptingInterface::createInputController(const QString& deviceName, const QString& tracker) {

View file

@ -203,7 +203,17 @@ void ApplicationOverlay::renderOverlay(bool renderToTexture) {
const float NEAR_CLIP = -10000;
const float FAR_CLIP = 10000;
glLoadIdentity();
glOrtho(0, glCanvas->width(), glCanvas->height(), 0, NEAR_CLIP, FAR_CLIP);
#ifdef Q_OS_MAC
// OSX will take care of scaling for us
const float dpiScaleX = 1.0f;
const float dpiScaleY = 1.0f;
#else
const float NATIVE_DPI = 96.0f;
const float dpiScaleX = NATIVE_DPI / glCanvas->logicalDpiX();
const float dpiScaleY = NATIVE_DPI / glCanvas->logicalDpiY();
#endif
glOrtho(0, glCanvas->width() * dpiScaleX, glCanvas->height() * dpiScaleY, 0, NEAR_CLIP, FAR_CLIP);
glMatrixMode(GL_MODELVIEW);