【问题标题】:Best Practice for Rounded Rectangles in OpenGL ESOpenGL ES 中圆角矩形的最佳实践
【发布时间】:2013-04-04 21:12:41
【问题描述】:

使用 OpenGL ES,圆角矩形似乎有两种可行的选择:

  1. 使用 trig 手动绘制形状。 (这就是我目前正在做的事情。)
  2. 使用适当缩放的纹理或纹理组,例如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


【解决方案1】:

你想要的本质上是一种称为边缘抗锯齿的技术。

这个答案描述得很好:OpenGL ES iPhone - drawing anti aliased lines

只需将透明顶点应用到矩形的最外边即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多