Es gibt Beispiele für solche Effekte, über die Sie in vielen Spielen sprechen. Erstens gibt es die Schärfentiefe , die das Objekt in einiger Entfernung unscharf erscheinen lässt, als würde die Kamera auf Dinge fokussieren, die nur in der Nähe sind, wie in diesem Beispiel. Weitere Beispiele hierzu finden Sie im DirectX SDK-Paket. Dort finden Sie auch Beispielcode. Für OpenGL erhalten Sie sie im Internet, wenn Sie suchen.
Das zweite, was Sie vielleicht sehen möchten, ist das sogenannte Geometry MipMaping oder Progressive Meshes, das, wie der Name schon sagt, dem Textur-Mip-Mapping ähnelt, jedoch für die Geometrie. Die Anzahl der Polygone in einem Netz wird verringert, wenn sich das Objekt weiter von der Kamera entfernt. Dies hilft bei der Leistungssteigerung. In D3D gibt es eine Funktion, die beim automatischen Generieren von progressiven Netzen hilft. Hier ist es:
HRESULT WINAPI D3DXGeneratePMesh(
LPD3DXMESH pMesh,
const DWORD *pAdjacency,
const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
const FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH *ppPMesh
);
Hier ist ein Beispiel dafür:
BEARBEITEN:
Betrachten Sie das folgende Bild:
Dies ist der Keulungsstumpf der Kamera. Die Linie, die direkt durch die Mitte verläuft, ist der LookAt-Vektor. Angenommen, der Player möchte immer in der Mitte des Bildschirms fokussieren, definieren Sie den Winkel x. Jedes Objekt, das in einem Winkel positioniert wird, der größer als das festgelegte x ist, wird mit niedriger Auflösung gerendert, und diejenigen, die sich innerhalb des Winkels befinden, werden detailliert gerendert. Auf diese Weise werden die Objekte in der Mitte des Bildschirms detaillierter als die an den Seiten. Wenn der Spieler nicht in die Mitte schaut, passen Sie diese Mittellinie einfach an die Richtung an, in die der Spieler schaut. (oder drehen Sie die gesamte Kamera in diese Richtung).