aframe: Как получить пиксели с холста

Я хочу прочитать и обработать данные пикселей, отображаемые в кадре. Я попробовал код ниже

var canvas = document.querySelector('canvas'),
params = {
    preserveDrawingBuffer: true,
},
gl = canvas.getContext('experimental-webgl', params);
var pixels = new Uint8Array(canvas.width * canvas.height * 4);
gl.readPixels(
    0,
    0,
    canvas.width,
    canvas.height,
    WebGLRenderingContext.RGBA,
    WebGLRenderingContext.UNSIGNED_BYTE,
    pixels
    );

Но массив пикселей остался 0, 0, 0, 0 Как я могу прочитать данные о пикселях на холсте? Буду признателен, если вы ответите на этот вопрос


person Neko Neko    schedule 16.11.2016    source источник
comment
left of 0, 0, 0, 0 что ты имеешь в виду? почему вы имеете дело с четырехмерным пространством?   -  person Jaromanda X    schedule 16.11.2016
comment
возможно, это может помочь - stackoverflow.com/questions/17981163/   -  person Dex Dave    schedule 16.11.2016
comment
Конечно, это 0,0,0,0. Вы создали новый холст и ничего не визуализировали на нем. Он начинается и 0,0,0,0. Какой вопрос?   -  person gman    schedule 16.11.2016
comment
Массив пикселей является одномерным. И я также сослался на ссылку, представленную мистером Дексом, но, поскольку я не мог ее решить, я сделал здесь новый вопрос. Я использую платформу для создания виртуальной реальности на основе тегов A-FRAME Reference linkссылка Я хочу прочитать пиксельные данные экрана, созданного этим фреймворком.   -  person Neko Neko    schedule 16.11.2016


Ответы (1)


В выложенной вами демонстрации найдите и поставьте точку останова на строку, которая говорит:

    _gl = _context || _canvas.getContext( 'webgl', attributes )

Взгляните на attributes, это объект опций, и среди других настроек он содержит эту опцию:

    preserveDrawingBuffer: false

Хотя в вашем исходном сообщении показано, что вы вручную установили для этой опции значение true, ваша опция не была перенесена в опубликованную вами демонстрацию. Если вы можете заставить эту опцию действовать, вы сможете считывать пиксели обратно.

person emackey    schedule 16.11.2016