Уменьшите разрешение рендеринга WebGL и увеличьте FPSHtml

Программисты Html
Ответить
Anonymous
 Уменьшите разрешение рендеринга WebGL и увеличьте FPS

Сообщение Anonymous »

У меня возникла проблема с рендерингом 2D-спрайтов на холсте GL. Когда мой браузер работает на мониторе с более низким разрешением, он отображает более высокую частоту кадров в секунду, чем если бы он отображался на мониторе с более высоким разрешением.

Дисплей 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»