2011-02-28 71 views
3

我可以用算法绘制一个圆。然而,边界看起来很奇怪,像素看起来彼此独立。我希望他们更接近。我试图增大点的大小。但结果并不好。所以,我想如果我能完全填充像素会更好(我想它是方形的)。我该怎么做,或者你有什么更好的主意? 现在看起来像这样: http://img690.imageshack.us/i/circlev.jpg/使用OpenGL的Bresenham算法绘制圆

非常感谢您提前。

+0

尝试绘制更多点? – Goz

+1

为什么要用OpenGL重新实现Bresenham? OpenGL已经为您提供了一个线性原语。 – datenwolf

+1

@datenwolf,这是一个介绍性的计算机图形学课程中的经典作业问题。 –

回答

0

使用sin/cos方法,然后您可以从一个点绘制线条到另一个点,它也允许您更改多边形细节,更不用说更容易填充圆圈了(从三角形绘制中间到边缘)。

如果使用更高的细节,其结果将是几乎相同布氏。

+1

-1:OP很可能需要专门使用Bresenham的算法,因为有类需求。所以这并没有真正回答这个问题。 – Omnifarious

2

你JPEG来看,我不知道,如果你认为什么是世界空间中的一个像素,其实并非如此。也许你的投影矩阵并不完全符合你的想法。

是否启用GL_POINT_SMOOTH? - 这可能会让事情变得糟糕。那些像素看起来很奇怪。

假设采用这种算法是对你很重要(和你不感兴趣,可能是更有效的方法),你可以画一个四对每个“像素”,而不是使用GL_POINTS。

5

没有代码,就很难诊断问题。像素的实际布局对于该算法看起来是正确的。不过,您似乎在使用不直接将世界空间转换为屏幕空间的投影矩阵。

尝试使用正投影在那里你可以保证一个世界偏移坐标值得正好一个像素的屏幕空间。