在iOS上从OpenGL ES 3.0读取RGB8缓冲区?

在iOS上从OpenGL ES 3.0读取RGB8缓冲区?,第1张

概述我真的需要从GPU获得每个通道的RGB 8字节缓冲区. 我需要它传递给训练有素的卷积神经网络,它只接受该格式的数据. 我不能在CPU上转换它,因为我受到很大的CPU限制而且它很慢. 我目前有附加渲染缓冲区的FBO,其定义为: glRenderbufferStorage(GL_RENDERBUFFER,GL_RGB8_OES,bufferWidth,bufferHeight); 绑定,定义和呈现缓冲 我真的需要从GPU获得每个通道的RGB 8字节缓冲区.
我需要它传递给训练有素的卷积神经网络,它只接受该格式的数据.
我不能在cpu上转换它,因为我受到很大的cpu限制而且它很慢.

我目前有附加渲染缓冲区的FBO,其定义为:

glrenderbufferStorage(GL_RENDERBUFFER,GL_RGB8_OES,bufferWIDth,bufferHeight);

绑定,定义和呈现缓冲区时没有错误.

但是当我使用时

glreadPixels(0,bufferHeight,GL_RGB,GL_UNSIGNED_BYTE,rgbBufferRawname);

它给出了无效的枚举错误(0x0500).当我传递GL_RED_EXT或GL_RGBA并生成正确的缓冲区时,它工作正常(我通过将这些缓冲区上传到纹理并渲染它们来检查它,它们看起来是正确的).

我尝试设置glPixelStorei(GL_PACK_AlignmENT,1);但这没有任何区别.

我在iOS10和iPhone 6上.我在做ES2.0,但现在尝试切换到ES3.0,希望它能帮我解决问题.它没.

我非常感谢以任何方式获取RGB8缓冲区的帮助,
谢谢.

解决方法 根据OpenGL 3.0规范,GL_RGB不是格式的有效值.

https://www.khronos.org/opengles/sdk/docs/man3/html/glReadPixels.xhtml

您可能希望在检索GL_RGBA格式化缓冲区后将其转换为RGB,或者调整算法以补偿RGBA.

总结

以上是内存溢出为你收集整理的在iOS上从OpenGL ES 3.0读取RGB8缓冲区?全部内容,希望文章能够帮你解决在iOS上从OpenGL ES 3.0读取RGB8缓冲区?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1031021.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存