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

问题描述 投票:1回答:1

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

其中N是给定三角形的像素数。进一步的CPU处理需要此数量。我们的想法是使用GPU光栅化来对三角形的数量求和。我无法看到如何使用OpenGL ES 2.0(这是Android设备中最受欢迎的版本)。我的另一个问题是:是否可以使用OpenGL ES 3.0进行此类计算?

opengl-es gpgpu
1个回答
1
投票

我无法看到如何使用OpenGL ES 2.0

你不能; API根本不是为此而设计的。

是否可以使用OpenGL ES 3.0进行此类计算?

在一般情况下,没有。如果你可以使用OpenGL ES 3.1,如果你可以控制输入几何,那么一个可行的算法将是:

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

虽然性能可能非常糟糕 - 原子通常对大多数GPU实现都很糟糕。

© www.soinside.com 2019 - 2024. All rights reserved.