如何使用OpenGL ES求和三角形像素

时间:2019-04-25 16:50:41

标签: opengl-es gpgpu

我是OpenGL ES的新手。我目前正在阅读有关OpenGL ES 2.0版的文档。我有一个三角形2D网格,一个2D RGB纹理,并且我需要为每个三角形计算以下数量:

formula

formula

其中N是给定三角形的像素数。需要此数量才能进行进一步的CPU处理。想法是使用GPU栅格化对三角形上的数量求和。我看不到如何使用OpenGL ES 2.0(这是Android设备中最流行的版本)执行此操作。我还有一个问题:OpenGL ES 3.0可以进行这种类型的计算吗?

1 个答案:

答案 0 :(得分:1)

  

我看不到如何使用OpenGL ES 2.0

您不能;该API并非专门用于实现此目的。

  

使用OpenGL ES 3.0可以进行这种类型的计算吗?

在一般情况下,不会。如果可以使用OpenGL ES 3.1,并且可以控制输入几何图形,那么可行的算法将是:

  • 添加一个顶点属性,该属性是网格中每个三角形的原始ID(我们可以用作数组索引)。
  • 为每个基元分配一个原子缓冲区GL_ATOMIC_COUNTER_BUFFER,该原子已预先清零。
  • 在片段着色器中,递增与当前图元对应的原子(从顶点属性中加载)。

尽管性能可能会非常糟糕-原子通常会在大多数GPU实现中发挥作用。