【发布时间】:2020-02-06 11:01:12
【问题描述】:
我有一个 FloatBuffer 作为神经网络的输出,其中 RGB 通道用 [-1 .. +1] 值编码。我想使用 GLSurfaceView 在屏幕上渲染它们。最好的处理方法是什么?
我可以将缓冲区转储到 SSBO 并编写一个计算着色器,将其映射到 [0 .. 255] 范围的 ByteBuffer,然后以某种方式将其绑定到常规纹理。或者也许我可以设置我的计算着色器直接输出到一些纹理缓冲区?或者我应该直接从片段着色器中读取我的 SSBO(并实现我自己的线性插值)?
那么,通过 OpenGL ES 渲染内容的最佳方式是什么?请帮忙。
【问题讨论】:
-
纹理的源格式可以是浮点数,就像内部格式一样。
-
AFAIK,浮点纹理在安卓设备中的支持非常有限。不过值得一试,谢谢
-
如果提供了 SSBO,那么也提供了浮点纹理(很可能)
-
好吧,他们不是。例如,三星 Galaxy S7 和 S8 不公开 OES_texture_float 扩展,并且在给定浮点纹理的情况下什么也不渲染。 Google Pixel 3 的相同应用程序运行良好,并且 OES_texture_float 是其中的扩展...
标签: android opengl-es rendering ssbo