Creating vertex arrays with coordinates, colors etc Put all this to GPU buffers
На вход приходит одна вершина = один вызов шейдера. Основная задача: вычислить положение вершины в экранных координатах. Дополнительно: можно “прикрепить” к вершине данные, которые потом будут интерполироваться (например, цвет или текстурные координаты). 🔹 Важный момент: вершины не знают друг о друге, каждая обрабатывается изолированно.
Вершины группируются в примитивы: три вершины = треугольник, две = линия, одна = точка. GPU знает порядок из вызова drawArrays или drawElements.
Clipping — GPU отбрасывает те части примитивов, которые выходят за границы видимой области (view frustum). Culling — можно отбрасывать невидимые стороны полигонов (например, заднюю сторону треугольника).
Вот тут “геометрия превращается в картинку”: Примитивы раскладываются в сетку фрагментов (будущих пикселей). Для каждого фрагмента интерполируются данные вершин (например, цвет, uv).
Для каждого фрагмента вызывается твой код. Главная задача: вернуть цвет. Дополнительно можно использовать текстуры, световые расчёты, тени и т. д.
Перед записью в буфер кадра выполняются проверки: Depth test (z-buffer): ближний фрагмент заменяет дальний. Stencil test: спецэффекты, маски. Blending: смешивание цветов (прозрачность, свечение).
После всех операций цвет записывается в буфер кадра. Когда кадр готов — он показывается на экране.