Клиентские игры

Почему в видео играх нельзя сделать ровный круг? Почему делают двенадцатиугольники а не ровные круги?

НИЧЕГО НЕ ИЗУЧАЛ, отвечу как сам понимаю :)

Потому что это компьютер, тут все дискретно и ограничено вопросом да или нет. А круг - это бесконечное кол-во вопросов "да или нет", бесконечное кол-во информации (ведь если круг увеличивать - он все-равно будет кругом и не будет минимальной точки), что просто невозможно в рамках компьютера. Потому и приходится ограничивать кол-во этих вопросов. А ограничены эти вопросы кол-вом пикселей - квадратиков, из чего и состоит все цифровое изображение, а далее уже полигоны, спрайты и тд. Так-же и цифровой звук, но это другая история...
АО
Александр Островерхов
74 627
Лучший ответ
полигонов мало
Для экономии видеопамяти и увеличения производительности. Можно конечно картинку круглую с альфа каналом сделать,

Допустим есть 3Д моделька квадрата. Квадрат это полигон. В программе типа 3Ds Max такой полигон имеет 4 вершины. Но это всего лишь управляющие вершины. На самом деле вершин 6.
Полигон состоит из треугольников. Значит 2 треугольника с 3 вершинами у каждой.

Каждая вершина описывает позицию в 3D пространстве. например x=1.4242412 y=32.342342 z=-31.34232
Они указаны с десятичными дробями.
Чтобы хранить такие данные в компе используют тип float, обычно он равен 32 битам (4 байта),

Для того чтобы на модельке была правильно наложена текстура используют текстурные координаты. два значения для каждой вершины. так же тип float.

Для того чтобы не рисовать невидимую часть полигона (заднюю сторону), и чтобы понять куда повёрнута грань, полигон, есть нормали. Так же 3 значения на каждую вершину.

Получается. 6 вершин. 1 вершина хранит 3 координаты позиции, 3 нормали и 2 текстурные координаты, всего 8.
Они типа float (32 бита)
значит 32 * 8 = 256 бит на 1 вершину.
Вершин 6, значит 256 * 6 = 1536 бит

8 бит = 1 байт

1536 делим на 8 = 192 байта. на жалкий полигон.
А ещё есть индексный буффер в соответствии с которым идём построение 3D модели.

Так же к вершинам может быть множество других данных.
Те три данные это минимум.

теперь прикинем, сколько примерно весит автомобиль в памяти
Обычно у такого автомобиля около 5000 полигонов.
значит 10 000 треугольников
10 000 * 256(байтов) = 2 560 000(бит) = 320000(байт) = 312.5(кб)

текстура больше всех тратить память
100 на 100, каждая точка кодируется 4мя 32битными значениями значит 128бит*10000=1 280 000=156,кб маленькая текстура, меньше чем у текстур в PlayStation 1
текстура среднего качества 1024 на 1024 размером = 16 мегобайт.
У одной модели может быть несколько текстур.
Модель может ещё содержать normal текстуру (без неё попиксельное освещение не сделать) ещё + 16мб.

Всё это ещё нужно прогнать через шейдер, в который за каждый кадр пересылается куча данных (позиция камеры игрока, матрицы, источники света, текстуры, нормаль текстуры и т. д.)
Сначала через вершинный, в зависимости сколько вершин у каждой модели, потом через пиксельный, каждую модель. Пиксельный прогоняется столько раз сколько разрешение экрана стоит. 800*600 = 480000 раз при таком.
Почитай про полигоны. Весь игровой мир состоит из полигонов - плоскостей с текстурой. Современные средства программирования не позволяют создать что-то состоящее не из множества плоскостей
круг нельзя

Похожие вопросы