我目前正在使用Z-Buffer算法实现自己的渲染器。完成必要的计算后(阅读:我的Z-buffer充满了正确的值),我会使用SDL在必要的像素中进行颜色。我正在为此使用hwsurface。

我的问题是,如何尽可能快地渲染它?我的意思是图纸本身,我可以在结构,算法上进行优化,以后会这样做,但是我想确保图纸本身尽可能快。

因为我有自己的Zbuffer实现(稍后会有其他算法),所以我无法使用OpenGL,所以还有其他选择吗?

现在,我只是在Z-Buffer中浏览所有点,我绘制了必须绘制的所有像素,一个一个一个(并且因为它是Z buff的,我必须这样做,对吗?) drawpixel方法。关于SDL,我在越过Z-Buffer之前锁定了我的表面,绘制所有像素并将其解锁后,就我所知,这不会更快。

有什么建议么?

有帮助吗?

解决方案

软件实现非常慢,也就是说,在8800GT所做的FPS中,Warp会使I7六角虫在i7 Hexacore上造成差异。您不会在软件实施的Z-Buffer中找到任何竞争性能。

Z-Buffer并不是一种特别复杂的算法,您不太可能找到一种比另一种更有效的实现。 Z挡不是您在栅格化过程中所做的事情 - 这是您在像素渲染过程中所做的。如果新像素的深度比当前的书面值更远,请不要进一步渲染像素,例如,不要计算其颜色等。您不会绘制Z-Buffer或类似的内容。这不像是您可能为算法选择最有效的排序的一种类型 - 更像是矩阵乘法,它们几乎都是一样的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top