用于绘制视频帧的 OpenGL ES 着色器

Posted

技术标签:

【中文标题】用于绘制视频帧的 OpenGL ES 着色器【英文标题】:OpenGL ES shader for drawing video frames 【发布时间】:2015-10-08 03:18:26 【问题描述】:

我正在使用 OpenGL ES 编写 YUV 格式化视频帧的代码。

视频帧解码器库返回的尺寸比原始尺寸更大,因为它有一个步幅。

因此,当一帧转换为RGB时,它会变成这样的图像,并在纹理的角落绘制一个绿色的帧。

我目前的顶点分片是这个。请教我如何干净地绘制纹理。

void main()  
  vec3 yuv = get_yuv(nUV) - vec3(0.0625, 0.5, 0.5);
  yuv *= mat3(
  1.16438356, 0.0, 1.59602679,
  1.16438356, -0.391762290, -0.812967647,
  1.16438356, 2.01723214, 0.0);
  gl_FragColor.rgb = yuv;
  gl_FragColor.a = 1.0;
;

【问题讨论】:

【参考方案1】:

我是 OpenGL ES 的新手,所以我不太了解,但也许这可能会有所帮助。 http://www.learnopengles.com/android-lesson-four-introducing-basic-texturing/

【讨论】:

以上是关于用于绘制视频帧的 OpenGL ES 着色器的主要内容,如果未能解决你的问题,请参考以下文章

用于在大满贯中绘制特征点的opengl着色器[关闭]

NO.15 - OpenGL ES 使用GLSL加载图片

用于模糊的 OpenGL ES 2.0 片段着色器速度慢且质量低

在 iOS 上的 OpenGL ES 着色器中混合多个纹理会导致反向行为

用于片段着色器的 OpenGL GLSL 绑定采样器

opengl es着色器程序ID和vbo缓冲区ID相同