Дисплей Mac Retina: 2880x1800 = ~20 кадров в секунду
Внешний монитор: 1920x1080 = ~60 кадров в секунду
WebGL отображает более высокую частоту кадров на моем мониторе с разрешением 1080, чем на дисплее Retina Mac.
Как лучше всего заставить WebGL отображать изображение с более низким разрешением? Я пытался найти источники, которые помогли бы ответить на этот вопрос, но ничего не нашел в Интернете.
Я пробовал снизить разрешение следующим образом:
Код: Выделить всё
var ratio = 1
var width = $(window).width();
var height = $(window).height();
if (window.screen.height * window.devicePixelRatio > 1080) {
ratio = 1080/(window.screen.height * window.devicePixelRatio);
}
width = width*ratio;
height = height*ratio;
gl.canvas.width = width;
gl.canvas.height = height;
Код: Выделить всё
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
Код: Выделить всё
var width = $(window).width();
var height = $(window).height();
if (window.screen.height * window.devicePixelRatio > 1080) {
glTools.ratio = 1080/(window.screen.height * window.devicePixelRatio);
} else {
glTools.ratio = 1;
}
width = Math.round(width*glTools.ratio);
height = Math.round(height*glTools.ratio);
glTools.gl.canvas.width = width;
glTools.gl.canvas.height = height;
glTools.gl.viewport(0, 0, width, height);
Хотя ответ на этот вопрос правильный. Я просто хотел указать еще одного виновника моего FPS в моей видеоигре. Наличие таймеров в моем коде и выполнение CSS-анимации с неаппаратным ускорением в моей игре привели к блокировке потока и, следовательно, к тому, что рендеринг был запланирован на более позднее время.
Вы можете видеть, что игра рендерится со скоростью 60 кадров в секунду в Obsidio
Подробнее здесь: https://stackoverflow.com/questions/476 ... crease-fps
Мобильная версия