起初,为避免误解,opengl es 仅适用于三角形。
我有一个矩形(三角形条),是否可以在该矩形上切一个圆孔(或多个孔)。都是二维的。
起初,为避免误解,opengl es 仅适用于三角形。
我有一个矩形(三角形条),是否可以在该矩形上切一个圆孔(或多个孔)。都是二维的。
opengl 不支持真正的几何减法,但它可以很容易地用深度缓冲区或模板缓冲区伪造。
glColorMask(false, false, false, false)
将您的“洞”绘制到场景上,将值存入深度缓冲区(值小于三角形条带)或模板缓冲区。
禁用颜色蒙版,然后在启用深度或模板测试的情况下渲染三角形条。您之前绘制的区域将被遮盖,因此您将留下一个中间有一个孔的矩形。
作为 Tim 解决方案的替代方案,您还可以使用自定义片段着色器来切割孔:您可以使用遮罩纹理或仅使用 (x,y) 坐标和半径来定义孔。discard()
然后,如果它们在孔内,您可以简单地使用您的三角形碎片。最好的解决方案可能取决于您想要的孔的数量(蒙版纹理可能是最简单、最灵活的方法,特别是如果您还想有非圆形孔而距离测试可能对您有好处,您只有一个几个孔)。