Enabling highdpi mode on an iPhone 6 Plus should now create a 1080x1920 OpenGL view, rather than 1242x2208 (414x736@3x.)

This commit is contained in:
Alex Szpakowski 2014-09-14 17:04:54 -03:00
parent 3071128deb
commit ba565622aa
2 changed files with 23 additions and 9 deletions

View File

@ -189,12 +189,19 @@ UIKit_GetDisplayModes(_THIS, SDL_VideoDisplay * display)
SDL_bool addRotation = (data.uiscreen == [UIScreen mainScreen]);
CGFloat scale = data.uiscreen.scale;
#ifdef __IPHONE_8_0
/* The UIScreenMode of an iPhone 6 Plus should be 1080x1920 rather than
* 1242x2208 (414x736@3x), so we should use the native scale. */
if ([data.uiscreen respondsToSelector:@selector(nativeScale)]) {
scale = data.uiscreen.nativeScale;
}
#endif
for (UIScreenMode *uimode in [data.uiscreen availableModes]) {
/* The size of a UIScreenMode is in pixels, but we deal exclusively in
* points (except in SDL_GL_GetDrawableSize.) */
CGSize size = [uimode size];
int w = (int)(size.width / scale);
int h = (int)(size.height / scale);
/* The size of a UIScreenMode is in pixels, but we deal exclusively
* in points (except in SDL_GL_GetDrawableSize.) */
int w = (int)(uimode.size.width / scale);
int h = (int)(uimode.size.height / scale);
/* Make sure the width/height are oriented correctly */
if (isLandscape != (w > h)) {

View File

@ -121,11 +121,18 @@ UIKit_GL_CreateContext(_THIS, SDL_Window * window)
CGFloat scale = 1.0;
if (window->flags & SDL_WINDOW_ALLOW_HIGHDPI) {
/* Set the scale to the natural scale factor of the screen - the backing
dimensions of the OpenGL view will match the pixel dimensions of the
screen rather than the dimensions in points.
/* Set the scale to the natural scale factor of the screen - the
backing dimensions of the OpenGL view will match the pixel
dimensions of the screen rather than the dimensions in points.
*/
scale = uiwindow.screen.scale;
#ifdef __IPHONE_8_0
if ([uiwindow.screen respondsToSelector:@selector(nativeScale)]) {
scale = uiwindow.screen.nativeScale;
} else
#endif
{
scale = uiwindow.screen.scale;
}
}
if (_this->gl_config.share_with_current_context) {