From 2b266eb0399da84a998b257b5dad6174bb5f6fc2 Mon Sep 17 00:00:00 2001 From: Joe Wreschnig Date: Tue, 23 Sep 2014 18:12:18 +0200 Subject: [PATCH] Disable DPR != 1 on Safari. --- src/yuu/gfx.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/yuu/gfx.js b/src/yuu/gfx.js index 2c3088e..3765aaa 100644 --- a/src/yuu/gfx.js +++ b/src/yuu/gfx.js @@ -12,7 +12,22 @@ var gl; var canvas; - var dpr = yuu.DPR = this.devicePixelRatio || 1; + // Safari on OS X has issues with DPR != 1 where the backbuffer + // scales down, then back up. I'm pretty sure this is not a + // problem with this code, because I see similar artifacting on + // most demos, e.g. + // https://www.khronos.org/registry/webgl/sdk/demos/google/shiny-teapot/index.html + // + // With DPR = 1 this presumably still happens but the negative + // effect is lessened. + // + // Safari on iOS does _not_ have this problem (another reason why + // I suspect it's a bug in Safari and not this code), but reducing + // fragment count by 75% is generally a good idea on these devices + // anyway. + var dpr = yuu.DPR = !yuu.isSafari() + ? (this.devicePixelRatio || 1) + : 1; yT.defineProperty(Int8Array.prototype, "GL_TYPE", 0x1400); yT.defineProperty(Uint8Array.prototype, "GL_TYPE", 0x1401); -- 2.30.2