小编典典

如何使用Bresenham创建任意厚度的线?

algorithm

我目前正在使用Bresenham算法绘制线条,但是它们(当然)的厚度是一个像素。我的问题是画任意粗线的最有效方法是什么?

我使用的语言是C。


阅读 301

收藏
2020-07-28

共1个答案

小编典典

我认为最好的方法是绘制矩形而不是直线,因为具有宽度的线是二维对象。试图绘制一组平行线来避免过度绘制(以减少写入带宽)和欠画(缺少像素)会非常复杂。从起点和终点以及宽度计算矩形的角点并不难。

因此,在下面的评论之后,执行此操作的过程将是:

  1. 创建一个矩形,该矩形的长度与所需的线长相同,宽度等于所需的宽度,因此从(0,0)到(width,length)
  2. 使用2D变换将矩形角坐标旋转并将其平移到所需位置
  3. 使用硬件加速渲染器(例如OpenGL Quad *)或使用软件光栅化器对旋转的矩形进行光栅化。可以使用四栅格化器或一对三角形(例如,左上和右下)渲染它。

注意*:如果您使用的是OpenGL,则也可以同时执行第2步。当然,使用OpenGL确实意味着要理解OpenGL(又大又复杂),并且此应用程序可能会使在开发的后期阶段实现这一棘手的事情。

2020-07-28