function resizeCanvas() { canvas.style.width = window.innerWidth + "px"; canvas.style.height = window.innerHeight + "px"; // POI_DPR_CAP: リサイズ・回転のたびに実効dprを再計算し、既に生成済みの // Unityインスタンスへ反映する。config.devicePixelRatio は初期化時にしか // 読まれない(createUnityInstance内部で config を新規オブジェクトへコピーするため // 生成後の config への書き込みは無効)ので、unityInstance.Module を直接更新する。 var newDpr = poiComputeEffectiveDpr(window.innerWidth, window.innerHeight, window.devicePixelRatio || 1, poiGlLimitPx) * POI_RES_SCALE; window.__poiEffectiveDpr = newDpr; config.devicePixelRatio = newDpr; var mod = window.unityInstance && window.unityInstance.Module; if (mod) mod.devicePixelRatio = newDpr; resizePrLabel(); } window.addEventListener("resize", resizeCanvas); window.addEventListener("load", resizeCanvas); resizeCanvas(); // v1.0.126: WebGL DrawCall カウント(性能予算実測用) (function(){ var orig = HTMLCanvasElement.prototype.getContext; var drawCalls = 0; function wrap(gl){ if (!gl) return gl; function wrapFn(name){ var f = gl[name]; gl[name] = function(){ drawCalls++; return f.apply(this, arguments); }; return f; } wrapFn('drawArrays'); wrapFn('drawElements'); if (gl.drawElementsInstanced) wrapFn('drawElementsInstanced'); if (gl.drawArraysInstanced) wrapFn('drawArraysInstanced'); if (gl.drawRangeElements) wrapFn('drawRangeElements'); return gl; } HTMLCanvasElement.prototype.getContext = function(type, attrs){ var gl = orig.call(this, type, attrs); if (type && (type.indexOf('webgl') >= 0 || type.indexOf('experimental-webgl') >= 0)) return wrap(gl); return gl; }; window.__poiDrawCallReset = function(){ var c = drawCalls; drawCalls = 0; return c; }; })(); if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) { document.querySelector("#unity-container").className = "unity-mobile"; } var script = document.createElement("script"); script.src = loaderUrl; if (window.__poiDiagnostics) window.__poiDiagnostics.add('loader_start', 'Unity loader requested'); script.onerror = function () { if (window.__poiDiagnostics) window.__poiDiagnostics.fatal('loader_script_failed', 'Unity loader script failed', 'loader=' + loaderUrl, 'loader_404'); if (window.poiLoadingAbort) window.poiLoadingAbort(); }; script.onload = () => { try { if (window.__poiDiagnostics) window.__poiDiagnostics.add('loader_loaded', 'Unity loader loaded');