iPhone OpenGL ES 画出漂亮的线条

标签 iphone opengl-es line antialiasing smoothing

在我的 iPhone 应用程序中,绘制了许多线条。唉,其中一些既不是垂直的也不是水平的,这意味着它们有锯齿状的边缘。

启用 GL_LINE_SMOOTH 似乎没有效果。苹果文档中描述的多重采样抗锯齿是有效的,但我无法想象不可能制作出更好看的线条。使用抗锯齿功能后,线条变得平滑,但线条部分的颜色会扭曲。

使用OpenGL,如何画出一条看起来像Quartz-2D画的线,并且边框平滑、颜色一致、宽度可变的线?

(需要明确的是,GL_LINE_WIDTH 工作得很好,因此可变宽度目前不是问题。)

最佳答案

这是 3D 图形中的常见问题。大多数显卡通常更关心填充率和速度,而不是基本几何渲染中的视觉质量。他们使用 Bresenham 算法来绘制直线和多边形,不支持抗锯齿。

对于 3D API 来说,选择速度而不是视觉质量实际上是相当合理的,因为大多数视觉细节最终来自于纹理(插值)的使用,而不是来自于几何图形。

我的建议是激活多重采样,或者使用累积缓冲区手动执行 FSAA(如果在 OpenGL ES 下可用)。或者您可以尝试绘制多条线,并在预期坐标周围有一些透明度抖动。

关于iPhone OpenGL ES 画出漂亮的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037402/

相关文章:

iphone - 轻松懒加载

objective-c - Swift 函数的返回值

android - 如何在桌面上运行 (exe) Android OpenGL ES 2.0?

android - 基于旋转的 Sprite 运动

r - 用ggplot2从点绘制平均线

java - 创建 Java Apache POI 折线图,其中日期显示在水平 X 轴上

css - 带有 css 的凸边框顶部和边框底部?

iPhone - UIButton - 残疾人士的背景图像

ios - 使用 WebRTC 构建 iOS 原生应用

iphone - iPad 或 iPhone 支持 OpenGL ES 2.0 吗?