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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用OpenGL ES对三角形像素求和相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

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

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

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

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

以上是关于如何使用OpenGL ES对三角形像素求和的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL es 2.0 三角形上的高斯模糊

Android OpenGL - ES 纹理出血

使用 OpenGL 2.0(不是 ES)绘制三角形

OpenGL

OpenGL

用于模糊的 OpenGL ES 2.0 片段着色器速度慢且质量低