OpenGL ES 如何直接渲染 P010、P016 格式图像?

本文介绍了如何使用OpenGL ES直接渲染P010和P016格式的YUV图像。这两种格式都是4:2:0采样,区别在于有效位数,P010为10bit,P016为16bit。文章提到,渲染过程涉及到将数据加载到纹理,并在Shader中进行yuv2rgb转换。针对Y和UV平面的数据,分别采用了不同的纹理格式和处理方式,最终实现了与原图一致的渲染效果。源码可在GitHub的NDK_OpenGLES_3_0项目中找到。

未经作者(微信ID:Byte-Flow)允许,禁止转载
文章首发于公众号:字节流动

前面文章已经介绍过如何渲染 16bit 灰度图,本篇基于同样的思路来实现 P010、P016 格式图像的渲染。

P010 最早是微软定义的格式,表示的是 YUV 4:2:0 的采样方式,也就是说 P010 表示的是一类 YUV 格式,它的内存排布方式可能是 NV21、NV12、YU12、YV12 。

P016 也表示的是 YUV 4:2:0 的采样方式,与 P010 的差异只是有效位不同,P010 的有效位是 10bit , P016 有效位为 16bit 。

微软定义的其他 10bit 和 16bit YUV 格式:
在这里插入图片描述

下面我们讨论的 P010、P016 格式的内存排布方式跟 NV21 格式类似,只是每个 Y、U、V 分量分别占用 2 个字节。


(0  ~  3) Y00  Y01  Y0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节流动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值