Взагалі світ складається з безлічі трикутників, а карта - це перелік цих трикутників та розташування у світі кожної вершини. Процес їх малювання:
- Установіть положення «камери» - якби ви стояли у світі, саме тут ви б опинилися у світовій позиції
- Перетворіть вершини трикутника на «простір камери»
- Перетворіть трикутники з «простору камери» в «простір екрану» - саме тут відбувається ефект, що залежить від конкретних (віддалені речі менше). У цей момент трикутники стають 2D.
- Намалюйте 2D трикутник на прихованому екрані.
- Коли всі трикутники будуть намальовані, покажіть гравцеві екран.
Останній крок, як правило, прив'язується до частоти кадрів монітора, так що процес показу прихованого екрана виконується під час інтервалу пустого інтервалу - концепція, отримана від моніторів катодного проміння, що дозволило катодному промені рухатися знизу вправо вгору зліва, це вимагало швидкої, але не побіжно зміни напруги на котушках відхилення на задній частині променевої трубки.
Це дійсно простий метод. Для отримання високої продуктивності вам потрібно додати такі речі, як приховане видалення поверхні, окуляція, визначення видимого набору тощо. Існує безліч алгоритмів, які беруть участь у вирішенні питання, що намалювати.
Крім того, я сказав, що світ складається з трикутників, але він може не зберігатися на диску таким чином. Часто трикутники, які виводяться на екран, визначаються під час виконання від примітивів вищого порядку, таких як карти висоти, сплайни, тесаляція, геометричні примітиви (наприклад, сфера, коробка тощо) тощо.
Виділене обладнання не потрібно - багато ранніх 3D-ігор робили це все в програмному забезпеченні (навіть на 8-бітових процесорах без FPU). Це просто робить його швидше і простіше.
Таке просте запитання. Непроста відповідь.