DirectX中的圆角/边角(D3D9)

时间:2014-01-27 23:27:19

标签: geometry directx rounded-corners edges direct3d9

我使用DirectX创建了自己的小型2D引擎(okey,最后应该更像是GUI)并尝试为简单的Rectangle创建圆角。因为在我不知道如何提供这个之前我从未使用图形框架。 现在,我只重叠了5个矩形和4个圆圈(圆圈用于圆形边缘)。它确实适用于不透明的颜色,但如果我在矩形中添加alpha,则圆圈会产生问题。 (如下图所示 - 我应该选择其他颜色......)

<# Open Image #>

我自己找不到一个解决方案(我用谷歌搜索和思考我在DirectX中没有发现任何圆形边缘),我相信有一个更强大,更快速的方法。所以我的最后一个问题是,在Direct3D9中创建一个带圆角的矩形有哪些常见的算法?

1 个答案:

答案 0 :(得分:1)

绘制圆形四边形的常用方法是使用带有alpha通道的纹理。它非常简单,大多数gui都使用图像来实现特定的外观。如果你只画一个单色的盒子,它可能会在一段时间后看起来非常通用(即使它们有花哨的圆角;))。

但是如果你想直接绘制圆形四边形,我想要生成一个自定义几何体,它直接适合所需区域而不重叠(需要alphablending)。在你的情况下,它将是这样的:

Geometry for a rounded quad

角落使用的三角形越多,它看起来就越平滑。