3D z-buffer c# GDI plus

本文关键字:plus GDI z-buffer 3D | 更新日期: 2023-09-27 18:24:56

我在c#和GDI+中编写了一个非常简单的3d引擎,只用于渲染一些模型(我认为Directx或OpenGL就像铁锹一样吃汤)。到目前为止,我已经成功地实现了绘制模型的线框,但下一步当然是Faces。还有我的问题,现在我只是把我的三维点投影到二维点,然后用简单的方法画出来对于每个面g.DrawPolygon(Pens.Red, projected_points);和对于线框其ok。

可以计算多边形的重叠部分吗?然后绘制Filled Polygon,或者更好的想法是逐像素绘制,如果我的像素的z缓冲区更远,则设置新的像素。

如果第一个选项是可能的,哪一个更快(用于实现和计算)?

3D z-buffer c# GDI plus

可以计算多边形的重叠部分吗?然后绘制Filled Polygon,或者更好的想法是逐像素绘制,如果我的像素的z缓冲区进一步设置新像素。

如果第一个选项是可能的,哪一个更快(用于实现和计算)?

是的,这是可能的。您可以使用列表中的其他多边形测试每个多边形。复杂度取决于多边形的类型(当然,三角形最容易)。但是,随着多边形数量的增加,性能可能会急剧下降。即使你找到了重叠的区域,你也需要插值颜色或纹理坐标(如果你打算使用这样的坐标)。此外,我不确定您用于绘图的API,但GDI不支持使用插值颜色填充多边形。

我听说在发明Z缓冲区之前,这是3d图形中使用的方法。:)

我曾经尝试过实现类似的项目,并使用Z-buffer+我自己的例程来用插值颜色填充三角形(使用Z-buffer)。我直接绘制到GDI位图的像素数据缓冲区。然后,在渲染完所有多边形后,我将结果显示在屏幕上。