![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимизация OpenGL приложений [Delphi, Windows]
3DMax © (2006-05-10 03:12:00)Здравствуйте господа кодеры! Я недавно начал изучать OpenGL и стал вопрос оптимизации. Расскажите пожалуйста какие есть способы ускорения работы OGL? Дает ли прирост производительности использование glDrawArrays?
3DMax (2006-05-13 01:28:00) [1]
> XProger © (12.05.06 01:48) [9]
У меня не получается наложить текстуру на объект через VBO, на одни треугольники ложится, другие остаются нетекстурироваными. При использовании VertexArrays все работает.
qTorus (2006-05-12 15:59:00) [2]Спасибо за совет, ancara ©, только вот геометрия у меня изменяется в каждом кадре. Попробую VertexArrays, может оно и побыстрее будет...
ancara (2006-05-12 15:45:00) [3]
> Именно так и делаю.
Зря, не делай так, юзай DisplayLists для начала, возможно на них остановишься.
Будет желание, разберись с VBO, возможно в твоем случае он даст существенный прирост...
> FPS зависит от размеров полигонов не меньше, чем от их кол-
> ва?
FPS вообще странная штука, иногда от погоды зависит :)).
Насчет Display Lists, если не знаешь что это и с чем едят, то вкратце так:
Для начала отводишь переменную под номер дисплейного списка:
var
ListID: integer;
затем просишь OpenGL выделить тебе один (пока один) идентификатор:
ListID := glGenLists(1);
затем в какой нибудь специальной процедуре строишь этот список, готовишь геометрию:
glNewList(ListID, GL_COMPILE);
//здесь твои вызовы glVertex, glNormal и прочие манипуляции....
glEndList;
а в рендере, в каждом кадре просто вызываешь этот заранее подготовленный список:
glCallList(ListID);
А если геометрия изменилась - вызвал опять процедуру "сборки дисплейного списка" и вперед!
P.S. Приношу извинения автору ветки, за то что мы тут оффтоп развели, просто qTorus'у надо было в отдельной ветке про тормозА спросить....
qTorus (2006-05-12 15:23:00) [4]
> Или может между glBegin и glEnd вызываешь glVertex?
Именно так и делаю.
Повернул плоскость - fps вырос в разы. Действительно, мал fillrate. Значит выходит, что FPS зависит от размеров полигонов не меньше, чем от их кол-ва?
ancara (2006-05-12 14:19:00) [5]
>qTorus
Ты бы код чтоль привел...
Что используешь? DisplayLists, VertexArrays?
Или может между glBegin и glEnd вызываешь glVertex?
А fillrate проверить просто: поверни свою плоскость боком к камере, чтоб она типа в линию превратилась, и посмотри: если fps заметно вырос - то это fillrate...
antonn (2006-05-12 08:57:00) [6]antonn © (12.05.06 7:37) [11]
fillrect
т.е. fillrate :)
XProger (2006-05-12 08:37:00) [7]qTorus, необходимо обновить драйвера к видеокарте
antonn (2006-05-12 07:37:00) [8]fillrect у видеокарты мал:)
qTorus (2006-05-12 02:00:00) [9]При прорисовке около 500 треугольников на плоскости (за один кадр) (использую GL_TRIANGLES) начинаются тормоза. Система поддерживает аппаратное ускорение при данном формате пиксела. Не подскажете, в чём причина торможения?
XProger (2006-05-12 01:48:00) [10]http://xproger.mirgames.ru/?id=2#Land
3DMax (2006-05-12 01:36:00) [11]Дайте plz ссылочку на демку VBO. С VertexArrays у меня все получилось, а вот при выводе через VBO полно артефактов.
XProger (2006-05-11 18:23:00) [12]3DMax, суть - геометрия хранится в памяти видеокарты (аналогично текстурам), следовательно при каждой отрисовке не передаётся по шине.
ancara (2006-05-11 11:34:00) [13]>А что такое VBO?
GL_ARB_vertex_buffer_object
3DMax (2006-05-11 02:23:00) [14]
> XProger ©
А что такое VBO?
Sniper17 (2006-05-10 17:30:00) [15]расширения которые помогут:
Буфер для быстрого вывода на экрам больших массивов треугольников
GL_ARB_vertex_buffer_object для ATI аналог GL_ATI_vertex_array_object
Отсечение лишней геометрии
GL_HP_occlusion_test
GL_NV_occlusion_query
Частицы выводить при помощи GL_ARB_point_sprite
XProger (2006-05-10 17:15:00) [16]А если ещё и Blur реализовать 1 текстурой... ;)
grouzd[E]v (2006-05-10 17:01:00) [17]А если по заголовку - еще списки (много много списков) и отсечение невидимых граней. Ну и биндинг текстур (вдруг есть такие как я, создающие текстуры в каждом кадре =)
---
... we are walking on a thin line and you better avoid the risk ...
XProger (2006-05-10 07:31:00) [18]Даёт. А ещё больший прирост даёт использование VBO совместно с glDrawElements и GL_TRIANGLE_STRIP