![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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...