Enabling highdpi mode on an iPhone 6 Plus should now create a 1080x1920 OpenGL view, rather than 1242x2208 (414x736@3x.)
--- a/src/video/uikit/SDL_uikitmodes.m Wed Sep 10 18:10:37 2014 -0300
+++ b/src/video/uikit/SDL_uikitmodes.m Sun Sep 14 17:04:54 2014 -0300
@@ -189,12 +189,19 @@
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)) {
--- a/src/video/uikit/SDL_uikitopengles.m Wed Sep 10 18:10:37 2014 -0300
+++ b/src/video/uikit/SDL_uikitopengles.m Sun Sep 14 17:04:54 2014 -0300
@@ -121,11 +121,18 @@
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) {