Перейти к основному содержимому

Разработка графики — чек-лист

Разработчику
Загрузка вопросов…

Чек-лист самопроверки

Используйте после итогов и глав 114.

Ментальная модель и архитектура

  1. Чем модель отличается от отрисовки в графическом коде?
  2. Назовите три линии (данные, время, железо), смешанные в одном файле.
  3. Что делает update(), что — render() / draw()?
  4. Почему модель не зависит от разрешения экрана?
  5. Как по одной строке кода отличить физику от команды холсту?
  6. Чем retained mode отличается от immediate mode?
  7. Чем DOM отличается от <canvas> с точки зрения браузера?

Цикл, паттерны, данные

  1. Из каких шагов состоит игровой цикл?
  2. Для чего нужен dt (delta time)?
  3. Что такое double buffering простыми словами?
  4. Какую роль играет конечный автомат в меню, паузе и game over?
  5. Чем массив объектов отличается от дерева сцены?
  6. Что такое frustum culling?
  7. Что такое viewport culling в 2D?

Математика

  1. Запишите формулы поворота точки на угол θ (2D).
  2. Что даёт скалярное произведение двух векторов?
  3. Что объединяют матрицы translation, rotation, scale?
  4. Что такое MVP в 3D?
  5. Почему в Canvas важно помнить направление оси Y?

High-Level API и платформы

  1. Что такое контекст рендеринга? Примеры получения в вебе и Pygame.
  2. Почему координаты мыши нормализуют относительно canvas?
  3. Назовите три метода Canvas 2D для рисования круга/дуги.
  4. Чем WebGL ближе к железу, чем Canvas 2D?
  5. Что делает SDL? Связь с Pygame.
  6. Чем Unity отличается от WPF по модели сцены?
  7. Для чего используется Skia?
  8. Что переводит ANGLE?

Низкий уровень и GPU

  1. Почему GPU рисует только треугольники?
  2. Что делает vertex shader? Fragment shader?
  3. Что такое draw call?
  4. Чем OpenGL отличается от Vulkan по уровню контроля?
  5. DirectX 12 — для каких платформ?
  6. Что хранится в VRAM?
  7. Почему загрузка текстуры каждый кадр — плохая идея?
  8. Что такое mipmap?
  9. Что такое warp / wavefront?
  10. Как отличить узкое место CPU от GPU по симптомам?

Синхронизация и вывод

  1. Чем front buffer отличается от back buffer?
  2. Что такое tearing и V-Sync?
  3. Какую роль играет triple buffering?
  4. Что делает requestAnimationFrame?
  5. Какой frame time соответствует 60 FPS?
  6. Сколько байт занимает кадр 1920×1080 RGBA8?
  7. Почему SVG перед монитором всё равно становится растром?
  8. Что такое sRGB в контексте монитора?

Практика чтения кода

  1. Где в незнакомом проекте искать главный цикл?
  2. Какие признаки указывают на смешение update и render?
  3. Какие три главы вы откроете первыми перед портированием 2D игры с JS на Python?

Частые пробелы

ТемаМатериал
Три слоя в коде1, 2
Игровой цикл3
Canvas и WebGL7
Шейдеры и треугольники11
V-Sync и frame time13
Пиксель и GPU-стек1.16 Графика