这与 OpenGL ES 2.0 :glReadPixels() with float or half_float textures 有关.
我想在渲染后从帧缓冲区对象中读出浮点值。
在 iOS 上,如下
GLint ext_type;
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &ext_type);
实际上只是告诉我们 glReadPixels
只允许读取 GL_UNSIGNED_BYTE。
有没有办法使用这个article中相关的纹理缓存技术?解决这个问题?
背后的故事是,我正在尝试使用 OpenGL ES 2.0 片段着色器(类似于 Dominik Göddeke 的可信赖的 ol' tutorial example )为任意大小的矩阵(例如 100,000 x 100,000)实现通用矩阵乘法例程。 glReadPixel
在这里并不是特别合作,因为它将帧缓冲区 float 转换为 GL_UNSIGNED_BITS,导致精度损失。
最佳答案
我问了a similar question我认为答案是否,如果只是因为纹理缓存(作为 API)使用 CoreVideo 像素缓冲区并且它们目前不支持浮点格式。
关于ios - 是否可以通过 iOS 纹理缓存 API 从 OpenGL ES 帧缓冲区读取 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14288391/