从GPU读取单个整数

时间:2018-03-24 00:06:28

标签: android opengl-es

目标:OpenGL ES 3.1

在每一帧之后,我想从我的片段着色器中读回着色器刚写入的透明片段(即0 <α<1的片段)的数量。根据这个数字,CPU将在下一帧中使用不同的渲染技术(0 - 正常,快速渲染;&gt; 0 - &gt;切换到与顺序无关的透明方法,具有适当的缓冲区大小 - 这是很多慢点)。

我想我甚至不需要这些数据;我可以容忍1帧的延迟(即在将帧N发送到GPU之后,我的CPU可以读回前一帧N-1中的数字 - 如果这有助于提高速度)。

问题是:读取这个单个整数的最佳方法是什么? 我应该使用GL_READ_FRAMEBUFFER绑定FBO然后使用glReadPixels读取第一个像素吗?或者我应该使用glMapBufferRange?这甚至是个好主意吗?关键是,我需要与顺序无关的透明度,但是它的正确实现(带有每像素链表的A缓冲区)是一种慢得多的渲染技术,所以我想检测我是否需要它(大多数情况下)我不需要它的时间)并且只有在屏幕上确实存在一些透明片段时才会这样做。

0 个答案:

没有答案