WebGL最大分辨率? gl.readPixels返回空像素

时间:2017-01-18 15:07:03

标签: javascript node.js webgl

我使用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的理论最大分辨率是什么?它依赖于什么?

1 个答案:

答案 0 :(得分:0)

最大视口大小与GPU内存量无关。

您可以使用gl.getParameter

查看限制
console.log(gl.getParameter(gl.MAX_VIEWPORT_DIMS))
console.log(gl.getParameter(gl.MAX_RENDERBUFFER_SIZE))

我的猜测是您正在达到MAX_VIEWPORT_DIMS限制。