shader yuv420渲染

  • Creator 版本:2.3.3

  • 目标平台:Web

目前参考这篇文章,想尝试将yuv420的一维阵列用shader转rgb渲染到cocos上
https://www.itdaan.com/tw/b52789156a627a176e68bdcac7d490f7

撸了好多天都撸不出来,求技术大牛

yuv.zip (99.3 KB)

这是我的yuv资料,长宽比是1280x720
亲 用一生一世求个回应

求大老关注

###mark

mark

mark

你是要做渲染视频或者在cocos中做直播吗?

不用三张
用一张纹理就可以了

float y = texture2D(CC_Texture0, v_texCoord).r;
vec2 v_coord = v_texCoord;
v_coord.x = v_coord.x * 0.5;
if (v_coord.y > 0.5)
	v_coord.x = v_coord.x + 0.5;

v_coord.y = v_coord.y * 0.5;
if (v_coord.y > 0.5)
	v_coord.y = v_coord.y - 0.5;

v_coord.y = v_coord.y * 0.5 + 2.0 / 3.0;

float u = texture2D(CC_Texture0, v_coord).r;

v_coord.y = v_coord.y + 1.0 / 6.0;

float v = texture2D(CC_Texture0, v_coord).r;
u = u - 0.5;
v = v - 0.5;
float r = y + 1.403 * v;
float g = y - 0.344 * u - 0.714 * v;
float b = y + 1.770 * u;
gl_FragColor = v_fragmentColor * vec4(r, g, b, 1);

yuv数据在内存中重新排序过了?

对我是要渲染视频用

我前段时间实现了一套,在cpu中对yuv数据排序,在shader中进行浮点运算 看起来效率还可以 ,cpu使用也不算高

喔 是喔 技术大牛过然牛逼 所以?

可以参考下这个文章https://blog.csdn.net/shencaifeixia1/article/details/8941250

已换方法 再麻烦关帖

用了什么其他方案?