目前我正在第一次体验 3D 投影和渲染。所以,我正在使用 löve lua(ik,不是 3D 的最佳平台),我可以完美地渲染所有多边形(只有三角形)。因为按到相机的距离对多边形表进行排序是一项任务,这需要最多的时间,所以我为此实现了一个 z 缓冲区。但我不太确定如何做到这一点。我知道原理,但是如何找出三角形中一点到相机位置的距离?我目前的解决方案听起来像这样:
translate edge points of the triangle to 2D points ->
create polygon of those ->
for every pixel in the polygon: ->
translate 2D point back to 3D vertex (somehow) ->
calculate distance of vertex to camera position ->
if distance is bigger than zbuffer entry, overwrite zbuffer entry and
set pixel to polygon color
这听起来确实效率低下。我怎样才能加快速度?这里有没有人有更好的方法来实现 zbuffering?