【发布时间】:2013-04-04 21:12:41
【问题描述】:
使用 OpenGL ES,圆角矩形似乎有两种可行的选择:
- 使用 trig 手动绘制形状。 (这就是我目前正在做的事情。)
- 使用适当缩放的纹理或纹理组,例如9-Slice Scaling
第一个选项的问题是抗锯齿不是免费的,如果您的目标是与各种设备兼容,则不能指望 OpenGL 抗锯齿提示在硬件上实际工作。所以你留下了看起来不连贯的圆角矩形,特别是对于小的圆角矩形,以及进行另一个顶点数组绘制调用的性能开销。我想放弃这个
第二个选项(9-Slice 或 9-Patch)似乎是 UI 圆角矩形元素的首选方法,但令人惊讶的是,关于在 OpenGL ES 中实现 9-patching 的信息很少。
我想要的是:一种在 OpenGL ES 中渲染具有可调节边框宽度、边框颜色和填充颜色的抗锯齿圆角矩形的有效策略。有什么建议吗?
【问题讨论】:
-
对于第一个选项,您可以通过沿网格添加细边框来进行抗锯齿工作。网格外部的顶点的 alpha 为 0,内部的顶点的 alpha 为 1。如果您通过 alpha 变化来调节圆角矩形的颜色,您将获得 AA。
-
任何代码示例或资源如何使用此方法处理任意曲线?
-
查看stackoverflow.com/questions/19560575/…的答案希望对你有用。
标签: android graphics opengl-es rounded-corners nine-patch