Є приклади таких ефектів, про які ви говорите в багатьох іграх. По-перше, є « Глибина поля» , яка робить об’єкт на відстані виглядом розмитим, так, як ніби камера фокусується на речах, близьких лише до нього, як у цьому прикладі. Ви можете дослідити більше зразків, пов’язаних з цим, у пакеті DirectX SDK - вони також мають зразок коду. Для OpenGL ви отримаєте їх у мережі, якщо будете шукати.
Друге, що ви можете побачити, це те, що, можливо, відоме як Геометрія MipMaping або Прогресивні сітки, які, як випливає з назви, схожі на текстурову карту, але для геометрії. Кількість полігонів у сітці зменшується, оскільки об’єкт віддаляється від камери. Це допомагає збільшити продуктивність. У D3D існує функція, яка допоможе автоматично генерувати прогресивні сітки. Ось:
HRESULT WINAPI D3DXGeneratePMesh(
LPD3DXMESH pMesh,
const DWORD *pAdjacency,
const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
const FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH *ppPMesh
);
Ось приклад цього:
EDIT:
Розгляньте наступне зображення-
Це зрив камери. Лінія, що йде прямо через середину, - вектор LookAt. Тепер, припускаючи, що гравець завжди захоче сфокусуватися в центрі екрану, ви визначаєте кут x. Будь-який об'єкт, який буде розташований під кутом більше, ніж вирішений x, матиме низьку роздільну здатність, а ті, які знаходяться під кутом, будуть надані з деталізацією. Так, об’єкти в центрі екрана будуть більш детальними, ніж ті, що розташовані з боків. Бо якщо гравець не дивиться на центр, то просто налаштуйте цю центральну лінію в напрямку, в якому гравець дивиться. (або, можливо, повернути всю камеру в той бік).