对于屏幕外渲染,是否可以使用nvidia gpu在片段着色器上写入NV12纹理(作为GL_R)?

时间:2018-12-03 10:24:03

标签: opengl gpu nvidia yuv

我正在执行一项任务,可在视频流的每一帧实时渲染某些内容。 当前管道:

  1. demux h264
  2. 复制到gpu并解码到cuda缓冲区
  3. 转换为RGBA
  4. 复制到纹理
  5. 将纹理绑定到fbo
  6. 渲染为fbo(文字,图片,线条...)
  7. 转换回yuv
  8. 编码为h264

我想知道是否有一种方法可以避免第3步和第7步。

例如,将YUV帧数据复制到大小为(w x 1.5h)的单通道纹理,然后将该纹理绑定到fbo。在某些渲染过程中(片段着色器?),使用着色器读取像素坐标和颜色,将RGBA转换为YUV,在NV12纹理上将YUV分离为3个不同的坐标。

这样我们就可以将渲染定向到YUV帧数据,避免在渲染过程中将大多数未修改的帧数据从YUV转换为RGBA,然后再将其转换回YUV。

如果要使用nvidia gpu渲染文本,线条,纹理以构图,如果我不使用OpenGL,可以使用什么来有效地使用GPU。

0 个答案:

没有答案