Да, вы очищаете экран и каждый раз перерисовываете все. Вот как работает много игровых движков.
Однако я также должен отображать огромное количество точек, которые идут на накопление как самолет moves.I попытались с прозрачным экраном с помощью
Вы, вероятно, пытается сделать слишком много частиц. 100 частиц (или несколько сотен, но меньше тысячи) должно быть достаточно, чтобы провести след комет. С помощью всего 200 (БОЛЬШИХ) частиц вы можете создать очень убедительное облако.
Кроме того, вам не нужны очки для рисования кометы. Используя альфа-смешение, вы можете легко рисовать полупрозрачные светло-саблевидные линии, используя треугольники.
Светло-сабля, как, плазма-подобное, подобное пламя должны использовать любой цвет с небольшим оттенком белого цвета (RGB 255, 10, 10, например), и традиционно рисуется с использованием glBlendFunc(GL_SRC_ALPHA, GL_ONE)
Вот несколько примеров. Примеры показывают треугольную сетку, которую вы должны использовать. Цифры обозначают альфа. 0 - полностью прозрачный, 1 - полностью непрозрачный. косые черты указывают на триангуляцию, когда это необходимо."|" и "-" обозначают лицо края:
светящиеся линии
0--0--0--0
| \| | /|
0--1--1--0
| /| | \|
0--0--0--0
repeat
0--0
| |
1--1
| |
0--0
to add more segments
толщиной светящейся линии
0--0--0--0
| \| | /|
0--1--1--0
| | | |
0--1--1--0
| /| | \|
0--0--0--0
repeat
0--0
| |
1--1
| |
1--1
| |
0--0
to add more segments.
Вы можете использовать что-то подобное для кометы след. И добавьте несколько мелких частиц для искр или что-то еще. Также не забывайте о текстурах. Используя текстуры, вы можете легко добавить больше деталей, чем если бы вы пытались рисовать все, используя неструктурированную геометрию.
--edit--
белого след самолета
Для реализации дыма любого вида ...
- вам нужно использовать очень большие текстурированные частицы с «дымчатым "/" облачная "текстура. Если вы google «текстура дыма частиц» на изображениях Google, вы увидите, о чем я говорю.
- Эти «большие» частицы не могут быть обычно нарисованы с использованием точечных спрайтов (потому что они могут быть больше, чем экран на близком расстоянии) и требуют «рекламных щитов». Billboard - это квадрат, который всегда смотрит на камеру.
- Идеально цветной канал текстуры дыма должен быть полностью белым (так что вы можете окрашивать отдельные частицы с использованием вершинного цвета), а «дым» должен быть окрашен в альфа.
- Частицы дыма должны быть отсортированы по глубине, когда вы их рисуете, и должны быть отображены от дальнего до ближайшего (от камеры). Алгоритм сортировки вставки хорошо работает с «частично отсортированными» данными.
- частицы дыма должны быть оказаны с глубиной отключением записи (
glDepthMask(0)
, если я помню правильно)
- частицы дыма должны использовать
glBlendFunc(GL_SRC_ALPHA, GL_INV_SRC_ALPHA)
смешивание.
- Однако, если пламя внутри дыма, пламя должно использовать
glBlendFunc(GL_SRC_ALPHA, GL_ONE)
. Частицы пламени должны быть либо смешаны (то есть отсортированы по глубине вместе с ними), либо нарисованы после дыма (если используется отдельная система частиц).
- Чтобы сделать дым реалистичным, назначьте небольшую начальную скорость всем частицам, медленно увеличивайте их размер со временем и сделайте их более прозрачными. Когда частицы становятся полностью прозрачными, удалите их из системы частиц.
- При рисовании полупрозрачной альфа-смешанной поверхности включите альфа-тест и отрежьте пиксели с альфа == 0. Это ускорит рендеринг. (Важно, потому что вы можете убить частоту кадров со слишком большим количеством частиц дыма даже на приличном оборудовании)
- с использованием множества дымовых частиц для биллинга может быть дорогостоящим, особенно если они очень близки, поэтому, если вы хотите заполнить большую площадь этим дымом и частицами будут большими и плавать на уровне глаз, покрывая всю площадь экрана полупрозрачными поверхностями несколько раз, вам может понадобиться изучить некоторые другие объемные технологии тумана.
- Не перемещайте отдельные частицы с помощью матриц. Не набирайте одну частицу за звонок. Нарисуйте их все за один раз, это будет намного быстрее.
Благодарим вас за ответ. Ваша идея действительно приятная, но я понял, что вы пытаетесь показать только короткий хвост кометы, если я не ошибаюсь. То, что я хотел, было чем-то вроде белого следа самолета, который остается навсегда. Другим примером, который я могу дать, является приложение для рисования. Во время рисования я должен иметь возможность отображать движущуюся кисть, а также след краски. Надеюсь, ты понял, что я пытаюсь передать. Я очень ценю ваши усилия и подробный ответ. Я уверен, что это поможет мне в будущем! –
безупречный !! Благодаря... –