繁体   English   中英

OpenGL ES 2.0:带浮点或half_float纹理的glReadPixels()

[英]OpenGL ES 2.0 :glReadPixels() with float or half_float textures

我正在为iPhone(iOS 4.1)编写一个OpenGL ES 2.0应用程序。 在计算结束时,在着色器中完成,我需要将一些数据写回CPU。 据我所知,这可以通过glReadPixels()来完成。 为了保持精度,我想在着色器之间使用half_float或浮动纹理,这似乎是扩展支持的。

问题:是否可以使用glReadPixels()读取float或half_float纹理?

谢谢,

拉尔斯

我也遇到过这个问题。 对于iOS,您可以使用GL_EXTENSIONS参数检查可用的扩展名列表 - 必须出现GL_OES_texture_float。 但! 根据规范,这不提供从GPU读取浮点值的机会。 这是来自glReadPixels()docs:

只接受两个格式/类型参数对。 始终接受GL_RGBA / GL_UNSIGNED_BYTE,并且可以通过查询GL_IMPLEMENTATION_COLOR_READ_FORMAT和GL_IMPLEMENTATION_COLOR_READ_TYPE来发现其他可接受的对。

因此,您可以使用以下代码检查可阅读的可用类型/格式:

GLint ext_format, ext_type;
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &ext_format);
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &ext_type);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM