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');