2017-01-18 2 views
1

Я использую headless-gl вместе с узлом для рендеринга созданного с высоким разрешением изображения WebGL на стороне сервера. Это отлично работает в зависимости от выбранного разрешения.WebGL максимальное разрешение? gl.readPixels возвращает пустые пиксели

'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 (12 ГБ) никуда не годится при запуске.

Каково теоретическое максимальное разрешение для webgl и на что оно зависит?

+0

Возможно, вы захотите также проверить наличие ошибок, вызвав 'gl.getError()' – gman

ответ

0

Максимальный размер видового экрана, который не зависит от объема памяти графического процессора.

Вы можете видеть границы с помощью gl.getParameter:

console.log(gl.getParameter(gl.MAX_VIEWPORT_DIMS)) 
console.log(gl.getParameter(gl.MAX_RENDERBUFFER_SIZE)) 

Я предполагаю, что вы ударять MAX_VIEWPORT_DIMS ограничение.

+0

Спасибо, что это полезно! –

+0

Захват снимка окна OpenGL с очень большим разрешением изображения: http://stackoverflow.com/a/6491939/243103 –

+0

Этот ответ на @stefan указан для OpenGL. Хотя идея звучит, фактическое решение не имеет ничего общего с WebGL. WebGL не имеет этих функций. Если вы используете файл three.js [вы можете ссылаться на этот образец] (https://threejs.org/examples/webgl_multiple_canvases_grid.html). В противном случае решение рендеринга сетки изображений для создания большего изображения будет зависеть от ваших шейдеров и выбранной вами математической библиотеки. – gman

Смежные вопросы