Estoy trabajando en un proyecto de aprendizaje personal para hacer un clon Minecraft. Está funcionando muy bien aparte de una cosa. Similar a Minecraft, mi terreno tiene muchos cubos apilados en la Y para que puedas cavar. Aunque hago el sacrificio de triturado, esto todavía significa que dibujo inútilmente todas las capas de cubos debajo de mí. Los cubos son X, Y y Z ordenados (aunque solo en 1 dirección, por lo que técnicamente no se ordena Z a la cámara). Básicamente, desde la posición del jugador solo agrego punteros a cubos alrededor del jugador. Luego hago triturado contra estos. Yo no hago la subdivisión del árbol oct. Pensé en simplemente no renderizar las capas debajo del jugador, excepto que esto no funciona si el jugador mira hacia abajo en un hoyo. Dado esto, ¿cómo podría evitar renderizar cubos debajo de mí que no puedo ver, o también cubos que están ocultos por otros cubos?Técnicas de descarte para renderizar muchos cubos
Gracias
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);
}
}
}
}
}
Por lo menos, cuando procesa ordenación de adelante hacia atrás, rechaza rápidamente todos los cubos inferiores. Pero un oct-tree será una buena idea. – GManNickG
@GMan ¿Cómo puedo renderizar de adelante hacia atrás si mi ángulo es de 65 grados en x, 70 en y, en ese caso, cómo podría hacerlo sin hacer una verificación de distancia de la cámara al reproductor? – jmasterx
Clonación de un clon. Estoy bastante contento de haber decidido no intentar hacer lo mío. –