Ci sono esempi di tali effetti di cui stai parlando in molti giochi. Innanzitutto, c'è la Profondità di campo , che rende sfocato l'oggetto a distanza, proprio come se la fotocamera stesse focalizzando l'attenzione solo su cose vicine, come in questo esempio. Puoi esplorare altri esempi relativi a questo nel pacchetto SDK DirectX, anche lì hanno un codice di esempio. Per OpenGL, li troverai in rete se cerchi.
La seconda cosa che potresti voler vedere è quella che è forse conosciuta come Geometry MipMaping o Progressive Meshes che, come suggerisce il nome, è simile alla mappatura mip delle trame, ma per la geometria. Il numero di poligoni in una mesh si riduce man mano che l'oggetto si allontana dalla telecamera. Questo aiuta ad aumentare le prestazioni. In D3D esiste una funzione che aiuta a generare automaticamente mesh progressive. Ecco qui:
HRESULT WINAPI D3DXGeneratePMesh(
LPD3DXMESH pMesh,
const DWORD *pAdjacency,
const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
const FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH *ppPMesh
);
Ecco un esempio di questo:
EDIT:
considera la seguente immagine-
Questa è la frustum di abbattimento della fotocamera. La linea che attraversa il centro è il vettore LookAt. Ora, supponendo che il giocatore vorrà sempre mettere a fuoco al centro dello schermo, definisci l'angolo x. Qualsiasi oggetto che verrà posizionato ad un angolo superiore alla x decisa avrà un rendering a bassa risoluzione e quelli che si trovano all'interno dell'angolo verranno renderizzati con dettagli. In questo modo, gli oggetti al centro dello schermo saranno più dettagliati di quelli sui lati. Se il giocatore non sta guardando il centro, allora basta regolare quella linea centrale nella direzione in cui il giocatore sta guardando. (o forse ruotare l'intera videocamera in quella direzione).