如何使用OpenGL将2D艺术分解为三角形

Jim*_*m B 5 opengl textures 2d box2d

我有2d角色艺术将被映射到Box2d骨架.例如,角色的手臂可以是2个与肘部关节连接的物理矩形.每个矩形都有自己对应的艺术精灵.下臂的艺术不是完全矩形的.它可能是一个长方形的png源,但是会有很多负空间,不一定要画出手臂.

我的问题是将2d艺术分解为三角形的最佳方法是什么?我应该将所有平面精灵视为由2个三角形组成的简单矩形,留下大量的alpha空间吗?或者最好将形状分解为多个三角形,并尝试匹配实际形状(可能是三角形扇形)?每种方法可能有哪些优点/缺点?我将更新纹理,因为角色会发生各种各样的事情.

以下是我所说的内容的说明:

IMG

(红色方块是物理形状,蓝色线条是可能的三角形配置)

gen*_*ult 1

几何形状越少通常性能越好(左起第三个)。

“精确的”三角测量(左起第四个)对于高保真碰撞检测(闪亮的小行星反射的激光?)非常有用。

请小心频繁的纹理更新。 glTexSubImage2d()是要走的路。

如果您的 GL 实现支持它,您可以使用 PBO进行异步上传。

  • 如果您不需要实际的 alpha 混合(由于添加了目标像素读取,这需要更多的内存带宽),您可以使用 [alpha 测试](http://www.opengl.org/wiki/Transparency_Sorting#Alpha_test),如果 alpha 值低于某个阈值,它会简单地丢弃传入的像素。实际上,我认为您可以将混合和 alpha 测试结合起来,以获得两全其美的效果:通过较低的阈值,纯零像素会被提前剔除(在混合之前),同时仍然可以让您在对象边缘进行良好的 alpha 淡入淡出。 (2认同)