在我的 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/