我在哪里可以获得渲染填充三角形的算法?Edit3:我不能使用 OpenGL 来渲染它。我需要为此的每像素算法。
我的目标是从三角形渲染一个正多边形,所以如果我使用这个三角形填充算法,每个三角形的边缘不会重叠(或在它们之间产生间隙),因为如果我使用它会导致渲染错误例如XOR 渲染像素。
因此,渲染质量应该与 OpenGL 渲染相匹配,所以我应该能够定义 - 例如 - 一个具有 N 个顶点的圆,并且它可以正确地渲染为任意大小的圆;所以它不像一些三角形填充算法那样只使用整数坐标来渲染它。
我需要自己控制三角形填充的能力:我可以添加自己的逻辑来渲染每个单独的像素。所以我需要渲染背后的裸代码来完全控制它。它应该足够有效地绘制数以万计的三角形而无需等待超过一秒钟。(我不确定它最多能有多快,但我希望它不会超过 10 秒)。
首选语言是 C++,但我可以根据需要转换其他语言。
如果没有免费的算法,我在哪里可以学习自己构建一个,这实际上有多难?(我=数学菜鸟)。
我添加了 OpenGL 标记,因为这与它有某种关联。
Edit2:我在这里尝试了算法:http: //joshbeam.com/articles/triangle_rasterization/但它似乎有点破损,这是一个带有 64 个三角形的圆圈:
但是如果你放大,你可以看到错误:
解释:有 2 个像素与其他三角形颜色重叠,这不应该发生!(或透明度或异或等效果会产生不好的渲染)。
似乎错误在较小的圆圈上更明显。如果我想对像素产生 XOR 效果,这是不可接受的。
我能做些什么来解决这些问题,所以它会完美地填充它而没有重叠的像素或间隙?
Edit4:我注意到渲染非常小的圆圈不是很好。我意识到这是因为坐标确实被转换为整数。如何将坐标视为浮点数并使其像在 OpenGL 中一样精确和完美地渲染圆?这是小圆圈看起来有多糟糕的示例:
注意 OpenGL 渲染是多么完美!这就是我想要实现的目标,而不使用 OpenGL。注意:我不只是想渲染完美的圆形,而是任何多边形形状。