que tiene un juego simple que utiliza una representación 3D cuadrícula, algo así como:juego 3D Geometría
Blocks grid[10][10][10];
La persona en el juego está representado por un punto y un vector de vista:
double x,y,z, dx,dy,dz;
trazo la cuadrícula con 3 bucles for anidados:
for(...) for(...) for(...)
draw(grid[i][j][k]);
el problema obvio de esto es cuando el tamaño de la red crece dentro del hun dreds, fps caen dramáticamente. Con un poco de intuición, me di cuenta que:
- bloques que estaban ocultos por otros bloques en la red no tienen que ser prestados
- Los bloques que no estaban dentro del campo de visión de la persona también no necesitan ser prestados (es decir. bloques que estaban detrás de la persona)
Mi pregunta es, dado un grid[][][]
, un vector vista dx,dy,dz
de la persona x,y,z
, y, ¿cómo podría averiguar qué necesitan bloques a ser prestados y que don' t?
Este es un tema bastante amplio, cubierto bien en [Determinación de superficie oculta] (http : //en.wikipedia.org/wiki/Hidden_surface_determination). –
Si usa OpenGL, o cualquier otra biblioteca 3D, lo hace _culling_ automáticamente en el renderizado final. – toto2
Entonces, si uso OpenGL, ¿entonces agregar la optimización geométrica no afectará el rendimiento general? –