1

起初,为避免误解,opengl es 仅适用于三角形。

我有一个矩形(三角形条),是否可以在该矩形上切一个圆孔(或多个孔)。都是二维的。

4

2 回答 2

2

opengl 不支持真正的几何减法,但它可以很容易地用深度缓冲区或模板缓冲区伪造。

  1. 掩盖你的颜色,所以没有任何东西被绘制到颜色缓冲区:
    glColorMask(false, false, false, false)
  2. 将您的“洞”绘制到场景上,将值存入深度缓冲区(值小于三角形条带)或模板缓冲区。

  3. 禁用颜色蒙版,然后在启用深度或模板测试的情况下渲染三角形条。您之前绘制的区域将被遮盖,因此您将留下一个中间有一个孔的矩形。

于 2012-07-19T21:28:06.220 回答
0

作为 Tim 解决方案的替代方案,您还可以使用自定义片段着色器来切割孔:您可以使用遮罩纹理或仅使用 (x,y) 坐标和半径来定义孔。discard()然后,如果它们在孔内,您可以简单地使用您的三角形碎片。最好的解决方案可能取决于您想要的孔的数量(蒙版纹理可能是最简单、最灵活的方法,特别是如果您还想有非圆形孔而距离测试可能对您有好处,您只有一个几个孔)。

于 2012-07-20T08:23:58.260 回答