【发布时间】:2017-12-07 16:32:18
【问题描述】:
我在将 2d 精灵渲染到 GL 画布时遇到问题。当我的浏览器在分辨率较低的显示器上时,它以比在高分辨率显示器上渲染时更高的 FPS 呈现。
Mac 视网膜显示屏:2880x1800 = ~20 FPS
外接显示器:1920x1080 = ~60 FPS
WebGL 在我的 1080 分辨率显示器上以比在 Mac Retina 显示器上更快的 FPS 进行渲染。
强制 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 动画会阻止线程,因此会导致稍后安排渲染。 在Obsidio处可以看到游戏以60FPS的速度渲染
【问题讨论】:
标签: javascript html webgl