我使用headless-gl和node一起在服务器端渲染高分辨率生成的WebGL图像。这可以正常工作,具体取决于所选的分辨率。
'use strict';
const Gl = require('gl');
const width = 7200;
const height = 10800;
// Setup renderer using headless-gl
const gl = Gl(width, height, { preserveDrawingBuffer: true })
// Clear screen to red
gl.clearColor(1, 0, 0, 1)
gl.clear(gl.COLOR_BUFFER_BIT)
// Get pixels
const pixels = new Uint8Array(width * height * 4);
gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
// Is first color indeed red?
if (pixels[0] === 255) {
console.log('OK');
}
process.exit();
在增加宽度/高度值的某个点之后,pixels
数组仅填充rgba像素的零值。我猜测我在某处遇到了内存/缓冲区限制,但我不确定是哪一个。根据nvidia-smi的说法,GPU内存(12GB)在运行时几乎没有耗尽。
webgl的理论最大分辨率是什么?它依赖于什么?
答案 0 :(得分:0)
最大视口大小与GPU内存量无关。
您可以使用gl.getParameter
:
console.log(gl.getParameter(gl.MAX_VIEWPORT_DIMS))
console.log(gl.getParameter(gl.MAX_RENDERBUFFER_SIZE))
我的猜测是您正在达到MAX_VIEWPORT_DIMS
限制。