Войти
ПрограммированиеФорумГрафика

Много элементов на сцене, как рендерить?

Страницы: 1 2 Следующая »
#0
2:31, 15 мар 2023

Учусь писать движки и игры на них и сейчас обстоит проблема в том, чтобы рисовались только те элементы на сцене, которые видны на экране. Как это называется?

Я вроде как понял что в этом может помочь BSP-дерево, типа бинарное разбиение пространства, это оно?

Я пока не понял как это bsp дерево работает с моделями. Есть пример кода из книги, но не ясно как этим пользоваться. Я даже подумал сделать что-то своё, но пока приходит на ум только в начале игры сделать анализ каждой позиции камеры и определить какие объекты попадают на камеру. Потом сохранить это в файл и доставать из файла при каждом запуске игры.

Но я думаю, что BSP сделано хорошо, но правильно ли я понял, что это именно то что нужно?

#1
2:32, 15 мар 2023

То-есть нужно сделать так, чтобы не нужно было по каждому элементу игры пробегаться каждый раз при рисовании, а должна быть какая-то структура, которая хранит уже разложенные объекты.

#2
3:05, 15 мар 2023

Или нужно при каждом движении пробегаться по каждому элементу и строить BSP-дерево?

#3
3:22, 15 мар 2023

v7
> Как это называется?
backface cull
отсекание граней.грань которая полигон с задней стороны(не смотрит в камеру) рендеру не подлежит.значит в экране рендерится меньше объектов
см нормали к полигонам.

#4
3:27, 15 мар 2023

Rikk
Я когда делал как-то игру, которую не закончил. Там карта мира состояла из множества тайлов. 100x100. По такому количествую при каждой отрисовке будет накладно пробегаться, поэтому я пошел на ухищрение. Но мне бы хотелось более грамотный способ узнать как делается.

#5
3:34, 15 мар 2023

гугли книга название -опенжл супер книга-.примерно
Райт Р.С.-мл., Липчак Б. "OpenGL. Суперкнига" (2006, DjVu)

#6
3:38, 15 мар 2023

Rikk
Спасибо, а что там искать?

#7
3:40, 15 мар 2023

рендеринг оптимизация объекты в камере отсечение

#8
3:43, 15 мар 2023

Rikk
Не думаю что там написано то, что нужно. Мне нужно отрисовывать карту 100x100 с видом сверху. Карта поделена на массив и надо знать какие из 10 000 объектов рисовать в экране.

#9
4:12, 15 мар 2023

v7
> надо знать какие из
для начала пробуй задавать минимальные и максимальные ху которые появляются в окне.это уже не вся карта а некая небольшая зона=число объектов в камере меньше=оптимизация.

#10
4:17, 15 мар 2023

Rikk
Вот я делал типа такого, как ты предлагаешь, но есть ли какой-то научный способ, типа как это в движках реализовано? Я искал в нескольких движках и не нашел того, что нужно. Не нашел кода как они объекты расскладывают.

https://youtu.be/1u6ajVn0VLw?t=5

#11
4:24, 15 мар 2023

v7
> Не нашел кода как они объекты расскладывают.
> https://youtu.be/1u6ajVn0VLw?t=5
Если я всё правильно понял, вам нужен кольцевой буфер

#12
4:29, 15 мар 2023

HungryBoba
Я знаешь как подумал сделать. Когда я создам например 100x100 объектов, то для них я создать блоки, и в каждый блок закину например 10x10 или 20x20 тайлов. И в рендере буду проверять минимальные размеры блоков и если размер попадает на экран, то рисовать весь блок.

#13
4:46, 15 мар 2023

v7
> но есть ли какой-то научный способ
по чистой науке.
процессор работает только одним методом—обращается на адрес.почитать записать из адреса в адрес.
других способов в науке нет.
отсюда логически выходит—работать с адресами памяти.метки указатели сортировки(один тайл лежит по адресу 100 а след за ним тайл лежит по адресу 200.промежуток сто адресов.отсортировать один тайл адрес 100,след тайл адрес 101).

#14
6:52, 15 мар 2023

v7
> Как это называется?
Perspective culling.

v7
> Я вроде как понял что в этом может помочь BSP-дерево,
Если хочешь велосипед, то пили октотрее на унордеред мапах(флат мапах а не стдшных).

v7
> По такому количествую при каждой отрисовке будет накладно пробегаться
Чушь. Нарисовать миллион спрайтов можно за 1 мс. Отсечение по деревьям нужно ежели у тебя миллионов 10 спрайтов или с 100к полигональных моделей.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика