7

我正在尝试使用 OpenGL ES 2.0 做一些 GPGPU。
在我看来,GL_NV_draw_buffers 和GL_OES_texture_float扩展是这里的一些必需品。

这个问题与GL_OES_texture_float扩展有关:从桌面世界,如果格式是定点(如 GL_RGBA),在着色器中访问时,我习惯于纹理在 [0..1] 范围内。
查阅相应的 OES 扩展页面,它说:

“......如果纹理的内部格式是定点的,则将组件限制为 [0..1]。否则,不会修改值。”

现在我已经在网上多次听到(例如这里的答案:Do OpenGL GLSL samplers always return floats from 0.0 to 1.0?),ES 2.0 也支持访问片段着色器中的非钳位值。但是这个功能是在哪里指定的呢?扩展名说“否则,值不会被修改”,但由于 OpenGL ES 规范只知道定点格式,它对我来说没有意义。

此外,据我了解,扩展仅指定浮点值可以从客户端内存读取到纹理中,但没有指定纹理在图形内存中的表示方式(即每个通道有多少位)。有这方面的官方规范吗?

最后,我想在我的片段着色器中将未固定的浮点值写入 FBO 颜色附件,最好每个通道使用 32 位。这可能吗?

4

0 回答 0