如何向下遍历四叉树以获得最底层的节点(3D、C++、DX11)

How do I traverse down my quad tree to get the bottom-most level nodes (3D, C++, DX11)

我正在为我的 3d 地形创建一个四叉树,因为我只需要担心 Z 轴和 X 轴,我在思考如何在创建树后实际向下移动时遇到了一些麻烦。

我已经创建了树,它们作为 QuadNode 对象存储在我的 QuadTree 对象中。每个 QuadNode 代表一个 'Quad' 的四叉树。它获取地形并确定是否需要细分为新节点,直到找到最底层的节点并且每个节点有足够数量的顶点。

我在每个节点对象中存储了一个 vertex/index 缓冲区,但它们只有在到达最底部的节点时才会被填充。所以我要获取的缓冲区(要绘制的缓冲区)就在树的底部。

现在我可以用一棵从根开始只有 4 个节点的基本树来相当简单地做到这一点,但是随着树变大,我感到困惑。这是演示的图像

我存储

缓冲区存储在最底部的节点中。有没有人有一个示例函数或伪代码,我将如何创建一个函数来遍历给定特定 level 的树,它会为我提供该级别的节点?或者有更好的方法吗?

虽然这不是我要找的东西,但我发现这是你遍历底部节点的方式,而且似乎很适合我想做的事情

How to iterating a Quad/Oct tree

void drawQuadtreeNodes()
{
    drawNode(quadtree->getRoot());
}

void drawNode(QuadNode * node)
{
    if (node->hasNodes) {
        drawNode(node->nodes[0]);
        drawNode(node->nodes[1]);
        drawNode(node->nodes[2]);
        drawNode(node->nodes[3]);
    }
    else {
        //bottom node
    }
}