在我的iPhone应用程序中,绘制了许多线条。遗憾的是,它们中的一些既不是垂直的也不是水平的,这意味着它们的边缘参差不齐。
启用GL_LINE_SMOOTH似乎没有任何效果。Apple文档中描述的多重采样抗锯齿效果很好,但我无法想象不可能做出更美观的线条。使用抗锯齿,线条变得平滑,但颜色沿着线条的部分扭曲。
使用OpenGL,如何绘制一条看起来像是由Quartz-2D绘制的线条,具有平滑的边框、一致的颜色和可变的宽度?
(需要明确的是,GL_LINE_WIDTH工作得很好,所以可变宽度目前不是问题。)
发布于 2011-08-12 16:31:36
这是3D图形中的一个常见问题。大多数显卡在其基本几何渲染中通常更关注填充速率和速度,而不是视觉质量。它们使用Bresenham算法来绘制直线和多边形,这不支持抗锯齿。
对于3DAPI来说,选择速度而不是视觉质量实际上是非常合理的,因为大多数视觉细节最终都来自纹理(插值)的使用,而不是几何图形。
我的建议是激活多次采样,或使用累积缓冲区手动执行FSAA (如果在OpenGL ES下可用)。或者,您可以尝试在预期坐标周围绘制多条透明度抖动的线条。
发布于 2011-08-12 21:36:16
除了Fabian所说的之外,您可能只需要启用alpha混合就可以显示线条平滑效果,方法是调用
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);https://stackoverflow.com/questions/7037402
复制相似问题