完美填充三角渲染算法?

Roo*_*kie 12 c++ language-agnostic geometry rendering

我在哪里可以获得渲染实心三角形的算法?Edit3:我无法使用OpenGL进行渲染.我需要每像素算法.

我的目标是从三角形渲染一个正多边形,所以如果我使用这个三角形填充算法,每个三角形的边缘将不会重叠(或在它们之间产生间隙),因为如果我使用例如它会导致渲染错误XOR渲染像素.

因此,渲染质量应与OpenGL渲染相匹配,因此我应该能够定义 - 例如 - 具有N顶点的圆,并且它将呈现为任意大小的圆形; 所以它不像一些三角形填充算法那样仅使用整数坐标来渲染它.

我需要能够控制三角形填充自己:我可以添加自己的逻辑,了解每个像素的渲染方式.所以我需要渲染背后的裸代码,以完全控制它.它应该足够有效地绘制成千上万个三角形而不用等待超过一秒钟.(我不确定它的速度有多快,但我希望它不会超过10秒).

首选语言是C++,但我可以根据自己的需要转换其他语言.

如果没有免费的算法,我可以在哪里学习自己构建一个,实际上有多难?(我=数学菜).

我添加了OpenGL标签,因为这与它有某种关系.

编辑2:我在这里尝试了算法:http://joshbeam.com/articles/triangle_rasterization/但它似乎有点破碎,这里是一个带有64个三角形的圆圈: 在此输入图像描述

但如果你放大,你可以看到错误: 在此输入图像描述

说明:有2个像素与其他三角形颜色重叠,不应该发生!(或透明度或XOR等效果会产生不良渲染).

似乎错误在较小的圆圈上更明显.如果我想对像素有XOR效果,这是不可接受的.

我该怎么做才能解决这些问题,所以它会在没有重叠像素或间隙的情况下完美填充?

编辑4:我注意到渲染非常小的圆圈并不是很好.我意识到这是因为坐标确实转换为整数.如何将坐标视为浮点数并使其像OpenGL一样精确而完美地渲染圆圈?以下是小圆圈看起来有多糟糕的例子:

在此输入图像描述

注意OpenGL渲染是多么完美!这就是我想要实现的,而不使用OpenGL.注意:我不想只渲染完美的圆形,而是任何多边形形状.