这与带有 float 或 half_float 纹理的 OpenGL ES 2.0 :glReadPixels() 有关。
我想在渲染后从帧缓冲区对象中读出浮点值。
在 iOS 上,以下
GLint ext_type;
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &ext_type);
真的只是告诉我们glReadPixels
只允许读出 GL_UNSIGNED_BYTE。
有没有办法使用本文中相关的纹理缓存技术来解决这个问题?
背后的故事是,我正在尝试使用 OpenGL ES 2.0 片段着色器(类似于 Dominik Göddeke 的可信赖的 ol'教程示例)为任意大小的矩阵(例如,100,000 x 100,000)实现通用矩阵乘法例程。 glReadPixel
这里并不是特别合作,因为它将帧缓冲区浮点数转换为 GL_UNSIGNED_BITS,导致精度损失。