Culling-Techniken zum Rendern vieler Würfel

Ich arbeite an einem persönlichen Lernprojekt, um ein @ zu erstelleMinecraf Klon. Abgesehen von einer Sache funktioniert es sehr gut. Ähnlich wie in Minecraft sind in meinem Terrain viele Würfel auf dem Y gestapelt, sodass Sie nach unten graben können. Obwohl ich kegelstumpfe, bedeutet dies immer noch, dass ich nutzlos alle Schichten von Würfeln unter mir zeichne. Die Würfel sind nach X, Y und Z geordnet (obwohl nur in 1 Richtung, also nicht nach Z zur Kamera geordnet). Grundsätzlich füge ich von der Position des Spielers nur Zeiger zu den Würfeln um den Spieler hinzu. Ich töte dann Kegelstumpf gegen diese. Ich mache keine Oktobaumunterteilung. Ich dachte daran, die Ebenen unter dem Player einfach nicht zu rendern, außer dies funktioniert nicht, wenn der Player in ein Loch schaut. Wie könnte ich unter diesen Umständen vermeiden, dass unter mir liegende Cubes gerendert werden, die ich nicht sehen kann, oder auch Cubes, die von anderen Cubes verborgen werden?

Vielen Dan

void CCubeGame::SetPlayerPosition()
{
PlayerPosition.x = Camera.x / 3;
PlayerPosition.y = ((Camera.y - 2.9) / 3) - 1;
PlayerPosition.z = Camera.z / 3;
}

void CCubeGame::SetCollids()
{

SetPlayerPosition();

int xamount = 70;
int zamount = 70;
int yamount = 17;

int xamountd = xamount * 2;
int zamountd = zamount * 2;
int yamountd = yamount * 2;
PlayerPosition.x -= xamount;

PlayerPosition.y -= yamount;

PlayerPosition.z -= zamount;


collids.clear();
CBox* tmp;

    for(int i = 0; i < xamountd; ++i)
    {
        for(int j = yamountd; j > 0; --j)
        {
            for(int k = zamountd; k > 0; --k)
            {

                tmp = GetCube(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k);



                if(tmp != 0)
                {
                    if(frustum.sphereInFrustum(tmp->center,25) != NULL)
                    {
                        collids.push_back(tmp);
                    }
                }

            }
        }

}

Antworten auf die Frage(16)

Ihre Antwort auf die Frage