记一次因纹理缩放导致OpenGL对连续视频帧添加等比例分屏效果时,只能输出第一帧的分屏画面问题的解决过程

在使用OpenGL进行纹理缩放实现视频帧分屏时,发现只有第一帧能正确显示。经过排查,问题出在纹理的mipmap设置上。在OpenGL4.6中,由于mipmap自动更新的设置被废弃,导致后续帧无法正常更新。通过关闭mipmap或手动更新解决了问题。
摘要由CSDN通过智能技术生成

一、背景

最近抖音的分屏效果很火,于是打算基于OpenGL的片元着色器来开发一个分屏的滤镜。
开发环境:Windows10
OpenGL版本:4.6

二、问题

开发了五种分屏,分别是二、三、四、六、九分屏,其中,二、三、六均没有问题,而四和六对图片处理没问题,但是对连续视频帧处理时,会出现后续的帧无法正常输出的问题,如下
在这里插入图片描述
为了便于对比,把出问题的(上半部)和不出问题的(下半部)放在同一个视口上了。可以看到上下显示的内容不一样,但是都是基于相同的一组视频帧做的处理!!!

三、解决过程

思路如下:

1.非缩放分屏,即裁剪形式的分屏可以正常输出后面的帧。而且经测试,纹理数据正常,纹理坐标正常。
2.猜想是glsl中 texture2D采样函数的问题,该函数在OpenGL4.6下对于缩放情况下的采样有问题。
3.在同样的电脑环境,用一个演示用的OpenGL程序上运行这个功能可以正常输出后面的帧,因此问题一定是出在当前程序的OpenGL设置上面。
4.想到texture2D
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值