如何解决如何使用 OpenGL ES 着色器转换 rgbaToYuv 然后渲染到 ImageReader 的表面
我想用 openGl 填充 ImageReader。
我的着色器可以转换 rgbaToyuv
。
这是我的代码:
ImageReader.newInstance(vConfig.width,vConfig.height,ImageFormat.YUV_420_888,2,/*1 << 17*/);
eglSurface= eglCreateWindowSurface(xxx,imageReader.getSurface,xxx);
glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES,textureOfCameraFrame);
eglSwapBuffers(eglDisplay,mEGLSurface);
但我得到以下错误:
The producer output buffer format 0x1(RGBA) doesn't match the ImageReader's configured buffer format 0x23(YUV_420_888)
上面写着imgReaderFmt != bufferFormat
。
但是我该怎么做才能使其使用 YUV_420_888
格式。
解决方法
如果您希望 GPU 渲染 YUV,则需要使用 EXT_YUV_target 扩展功能来设置 YUV 渲染通道。
https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_YUV_target.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。