前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从一个NV12渲染错误的issue说起

从一个NV12渲染错误的issue说起

作者头像
雪月清
发布2023-08-31 20:09:23
2050
发布2023-08-31 20:09:23
举报
文章被收录于专栏:雪月清的随笔雪月清的随笔

故事的背景要从之前的FFMpeg系列文章演示代码说起,有大佬留言工程中的NV12渲染shader中存在一个问题

确实是uv的取值写反了,渲染下来图像的颜色会不对

之前这个shader并没有做过测试,趁着修复这个issue的机会赶紧补上一个Test Case

准备Test Case

渲染相关的逻辑都在librender内,新增RenderTestActivity

运行下useRenderTestActivity,效果如下,可以看到画面颜色异常

RenderTestActivity的逻辑非常简单

NV12的数据我们通过ffmpeg来生成

修复渲染颜色异常

在NV12Drawer中,UV纹理采用的是GL_LUMINANCE_ALPHA

查看官方文档对这个format的解释

结合NV12的YUV排布可以得到U数据从纹理的rgb任意通道读取,V数据从纹理的a通道读取,运行Test Case后观察到效果正常

RenderManager简介

渲染模块librender的对外入口是RenderManager,内部做了一些常用格式的渲染支持、切换和缓存管理,目前能力虽然比较简陋,但是后续还会逐步迭代、重构和支持Vulkan(Vulkan简介

用法也很简单,可以参考RenderTestActivity

上面NV12渲染的流程控制在draw()中,会先将NV12数据绘制到FBO,中间可以加一些filter处理,最后再draw上屏

完整代码可以点击文末的"阅读原文"获取,欢迎各位大佬提issue和PR

~~END~~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雪月清的随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档