Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GLScene: тормоза на ровном месте


miek ©   (2004-11-03 18:11:00) 

Только-только начинаю делать проект с большим числом полигонов, и уже в самом начале вижу невысокую, прямо скажем, проиводительность. В кадре одновременно не больше 500 полигонов (TGLPlane), а FPS всего 110. Причем создание сцены (все штатными средствами, через Proxy) длится секунды три! Кто-нибудь подскажет, отчего такие тормоза и как исправить? Уже применил отсечение по расстоянию и по пираимде видимости, помогло не сильно.

http://www.miek.narod.ru/energhost.zip
[25 KB]


miek   (2004-11-05 18:09:00) [1]

Та же, что в начале:
http://www.miek.narod.ru/energhost.zip


DeadMeat   (2004-11-05 17:56:00) [2]

Ну а все таки ссылка какая? Просто интересно...

---
...Death Is Only The Begining...


miek   (2004-11-04 18:06:00) [3]

Я это так себе и преставлял, но не думал, что тормоза начнутся уже на первой тысяче. Ведь когда я создаю TerrarinRenderer с числом полигонов раз в 10 большим, скорость не сильно изменяется.

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


Sapersky   (2004-11-04 13:23:00) [4]

3D-ускорители, особенно с HW T&L, рассчитаны на вывод большого количества полигонов за раз (порядка сотен-тысяч). То есть нарисовать 500 отдельных полигонов (тем более устанавливая для каждого свою матрицу - если Proxy задаёт положение объекта, то именно это и происходит) - ГОРАЗДО медленнее, чем скинуть те же полигоны в один буфер (в данном случае объект GLScene - FreeForm или как его?), заранее просчитав трансформации и вывести всё за один присест.

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

Хотя, насколько я слышал, для того, чтобы получить это на OpenGL - нужно использовать дополнительные расширения (GL_ARB_vertex_buffer_object или что-то такое). Судя исходникам GLScene - у автора до этого ещё не дошли руки, используются только обычные дисплейные списки, если я правильно понял...

Но даже без спецрасширений вывалить кучу полигонов в ускоритель должно быть быстрее, чем капать по одному.


miek   (2004-11-04 07:51:00) [5]

Опечатка была, oops!


DeadMeat   (2004-11-03 23:54:00) [6]

Нее... Я имею ввиду, что самого архива нема. Там тока 404.... Может регистр букв забыл? Сама страница есть, а вот архива нЭту...

---
...Death Is Only The Begining...


miek   (2004-11-03 22:04:00) [7]

Сам, по координатам.

В архиве все нормально, вот только что закачал.


DeadMeat   (2004-11-03 19:51:00) [8]

Эта... Там пусто...
А как применил? В смысле средствами GLScene или сам...?

---
...Death Is Only The Begining...


Наверх

Титульная страница Поиск, карта сайта Написать письмо