Разработка графики — чек-лист
Чек-лист самопроверки
Используйте после итогов и глав 1–14.
Ментальная модель и архитектура
- Чем модель отличается от отрисовки в графическом коде?
- Назовите три линии (данные, время, железо), смешанные в одном файле.
- Что делает
update(), что —render()/draw()? - Почему модель не зависит от разрешения экрана?
- Как по одной строке кода отличить физику от команды холсту?
- Чем retained mode отличается от immediate mode?
- Чем DOM отличается от
<canvas>с точки зрения браузера?
Цикл, паттерны, данные
- Из каких шагов состоит игровой цикл?
- Для чего нужен
dt(delta time)? - Что такое double buffering простыми словами?
- Какую роль играет конечный автомат в меню, паузе и game over?
- Чем массив объектов отличается от дерева сцены?
- Что такое frustum culling?
- Что такое viewport culling в 2D?
Математика
- Запишите формулы поворота точки на угол θ (2D).
- Что даёт скалярное произведение двух векторов?
- Что объединяют матрицы translation, rotation, scale?
- Что такое MVP в 3D?
- Почему в Canvas важно помнить направление оси Y?
High-Level API и платформы
- Что такое контекст рендеринга? Примеры получения в вебе и Pygame.
- Почему координаты мыши нормализуют относительно canvas?
- Назовите три метода Canvas 2D для рисования круга/дуги.
- Чем WebGL ближе к железу, чем Canvas 2D?
- Что делает SDL? Связь с Pygame.
- Чем Unity отличается от WPF по модели сцены?
- Для чего используется Skia?
- Что переводит ANGLE?
Низкий уровень и GPU
- Почему GPU рисует только треугольники?
- Что делает vertex shader? Fragment shader?
- Что такое draw call?
- Чем OpenGL отличается от Vulkan по уровню контроля?
- DirectX 12 — для каких платформ?
- Что хранится в VRAM?
- Почему загрузка текстуры каждый кадр — плохая идея?
- Что такое mipmap?
- Что такое warp / wavefront?
- Как отличить узкое место CPU от GPU по симптомам?
Синхронизация и вывод
- Чем front buffer отличается от back buffer?
- Что такое tearing и V-Sync?
- Какую роль играет triple buffering?
- Что делает
requestAnimationFrame? - Какой frame time соответствует 60 FPS?
- Сколько байт занимает кадр 1920×1080 RGBA8?
- Почему SVG перед монитором всё равно становится растром?
- Что такое sRGB в контексте монитора?
Практика чтения кода
- Где в незнакомом проекте искать главный цикл?
- Какие признаки указывают на смешение update и render?
- Какие три главы вы откроете первыми перед портированием 2D игры с JS на Python?
Частые пробелы
| Тема | Материал |
|---|---|
| Три слоя в коде | 1, 2 |
| Игровой цикл | 3 |
| Canvas и WebGL | 7 |
| Шейдеры и треугольники | 11 |
| V-Sync и frame time | 13 |
| Пиксель и GPU-стек | 1.16 Графика |