Я использую PNaCl ffmpeg для открытия, чтения и декодирования потока RTSP. У меня теперь есть необработанные видеофрагменты, которые мне нужно перенести в WebGl для рендеринга на холсте.Как визуализировать двоичные данные на холсте с помощью WebGl?
Как я могу визуализировать двоичные данные на холсте?
Я запускаю следующий код: Я предполагаю, что после запуска этого кода я должен получить серый холст, потому что я передаю значения RGBA (120,120,120,1) синтетическим данным.
var canvas = document.getElementById('canvas');
var gl = initWebGL(canvas); //function initializes webgl
initViewport(gl, canvas); //initializes view port
console.log('viewport initialized');
var data = [];
for (var i = 0 ; i < 256; i++){
data.push(120,120,120,1.0);
}
console.log(data);
var pixels = new Uint8Array(data); // 16x16 RGBA image
var texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(
gl.TEXTURE_2D, // target
0, // mip level
gl.RGBA, // internal format
16, 16, // width and height
0, // border
gl.RGBA, //format
gl.UNSIGNED_BYTE, // type
pixels // texture data
);
console.log('pixels');
console.log(pixels);
<canvas id="canvas"></canvas>
я должен получить серый 16x16 окно представлены на холсте, но я не получаю это. Какие дополнительные шаги я должен предпринять, чтобы правильно отобразить 2D-растровое изображение на холсте?
PS. Я принимаю помощь от this article.
вероятно некоторую помощь: https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Animating_textures_in_WebGL – Kaiido
Спасибо за это, но поскольку я использую поток RTSP, он не может быть воспроизведен в теге видео, я использую PNaCl ffmpeg для получения потока, поэтому получение данных из элемента видео не будет работать. –
Вы не должны делать «gl.bufferData (gl.ARRAY_BUFFER, пиксели);» для данных текстуры. Данные текстуры передаются через teximage2d. Также опубликуйте полный код и вывод консоли из браузера. – prabindh