iPhone OpenGL ES画出漂亮的线条

时间:2011-08-12 08:23:15

标签: iphone opengl-es line antialiasing smooth

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

启用GL_LINE_SMOOTH似乎无效。 Apple的文档中描述的多重采样抗锯齿效果很好,但我无法想象不可能制作出更漂亮的线条。通过抗锯齿,线条变得平滑,但颜色沿着线条的部分变形。

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

(很明显,GL_LINE_WIDTH工作正常,因此可变宽度目前不是问题。)

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

除了Fabian所说的,你可能需要通过调用

来启用线条平滑的alpha混合以显示效果
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);