Hay ejemplos de tales efectos de los que estás hablando en muchos juegos. Primero, está la Profundidad de campo , que hace que el objeto a distancia se vea borroso, como si la cámara enfocara cosas cercanas, como en este ejemplo. Puede explorar más muestras relacionadas con esto en el paquete DirectX SDK; también tienen código de muestra allí. Para OpenGL, los obtendrá en la red si busca.
La segunda cosa que querrás ver es lo que se conoce como Geometry MipMaping o Progressive Meshes que, como su nombre lo indica, es similar al mapeo de mip de textura, pero para la geometría. La cantidad de polígonos en una malla se reduce a medida que el objeto se aleja de la cámara. Esto ayuda a aumentar el rendimiento. En D3D, existe una función que ayudará a generar mallas progresivas automáticamente. Aquí está:
HRESULT WINAPI D3DXGeneratePMesh(
LPD3DXMESH pMesh,
const DWORD *pAdjacency,
const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
const FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH *ppPMesh
);
Aquí hay un ejemplo de esto:
EDITAR:
considere la siguiente imagen:
Este es el momento decisivo de la cámara. La línea que pasa por el medio es el vector LookAt. Ahora, suponiendo que el jugador siempre quiera enfocar en el centro de la pantalla, usted define el ángulo x. Cualquier objeto que se colocará en un ángulo mayor que el x decidido tendrá una representación de baja resolución, y los que están dentro del ángulo se representarán con detalle. De esta manera, los objetos en el centro de la pantalla serán más detallados que los de los lados. Si el jugador no está mirando al centro, simplemente ajuste esa línea central en la dirección en la que está mirando el jugador. (o tal vez gire toda la cámara en esa dirección).