1

我有一个 FloatBuffer 作为神经网络的输出,其中 RGB 通道用 [-1 .. +1] 值编码。我想使用 GLSurfaceView 在屏幕上渲染它们。处理它的最佳方法是什么?

我可以将缓冲区转储到 SSBO 并编写一个计算着色器,将其映射到 [0 .. 255] 范围的 ByteBuffer,然后以某种方式将其绑定到常规纹理。或者也许我可以设置我的计算着色器直接输出到一些纹理缓冲区?或者我应该直接从片段着色器中读取我的 SSBO(并实现我自己的线性插值)?

那么,通过 OpenGL ES 渲染内容的最佳方式是什么?请帮忙。

4

1 回答 1

0

您可以尝试加载它,但这取决于您每秒需要多少更新。那就是用你的机器测试。

首先绑定你的纹理(你必须创建一个)然后当你的输入缓冲区准备好使用时

GLES20.glTexSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, width, height, GLES30.GL_RGB, GLES20.GL_FLOAT, InputFloatBuffer);

它适用于 ByteBuffer,我没有尝试使用 Float,但没有 Signed_float 格式。

使用内核将带符号的浮点数更改为字节。

于 2020-11-14T22:30:36.753 回答