Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.15;
Скачать: CL | DM;

Вниз

Оптимизация OpenGL приложений   Найти похожие ветки 

 
3DMax   (2006-05-10 03:12) [0]

Здравствуйте господа кодеры! Я недавно начал изучать OpenGL и стал вопрос оптимизации. Расскажите пожалуйста какие есть способы ускорения работы OGL? Дает ли прирост производительности использование glDrawArrays?


 
XProger ©   (2006-05-10 07:31) [1]

Даёт. А ещё больший прирост даёт использование VBO совместно с glDrawElements и GL_TRIANGLE_STRIP


 
grouzd[E]v ©   (2006-05-10 17:01) [2]

А если по заголовку - еще списки (много много списков)  и отсечение невидимых граней. Ну и биндинг текстур (вдруг есть такие как я, создающие текстуры в каждом кадре =)

---
... we are walking on a thin line and you better avoid the risk ...


 
XProger ©   (2006-05-10 17:15) [3]

А если ещё и Blur реализовать 1 текстурой... ;)


 
Sniper17   (2006-05-10 17:30) [4]

расширения которые помогут:
Буфер для быстрого вывода на экрам больших массивов треугольников
GL_ARB_vertex_buffer_object для ATI аналог GL_ATI_vertex_array_object

Отсечение лишней геометрии
GL_HP_occlusion_test
GL_NV_occlusion_query

Частицы выводить при помощи GL_ARB_point_sprite


 
3DMax   (2006-05-11 02:23) [5]


> XProger ©

А что такое VBO?


 
ancara ©   (2006-05-11 11:34) [6]

>А что такое VBO?
GL_ARB_vertex_buffer_object


 
XProger ©   (2006-05-11 18:23) [7]

3DMax, суть - геометрия хранится в памяти видеокарты (аналогично текстурам), следовательно при каждой отрисовке не передаётся по шине.


 
3DMax   (2006-05-12 01:36) [8]

Дайте plz ссылочку на демку VBO. С VertexArrays у меня все получилось, а вот при выводе через VBO полно артефактов.


 
XProger ©   (2006-05-12 01:48) [9]

http://xproger.mirgames.ru/?id=2#Land


 
qTorus   (2006-05-12 02:00) [10]

При прорисовке около 500 треугольников на плоскости (за один кадр) (использую GL_TRIANGLES) начинаются тормоза. Система поддерживает аппаратное ускорение при данном формате пиксела. Не подскажете, в чём причина торможения?


 
antonn ©   (2006-05-12 07:37) [11]

fillrect у видеокарты мал:)


 
XProger ©   (2006-05-12 08:37) [12]

qTorus, необходимо обновить драйвера к видеокарте


 
antonn ©   (2006-05-12 08:57) [13]

antonn ©   (12.05.06 7:37) [11]
fillrect

т.е. fillrate :)


 
ancara ©   (2006-05-12 14:19) [14]


>qTorus

Ты бы код чтоль привел...
Что используешь? DisplayLists, VertexArrays?
Или может между glBegin и glEnd вызываешь glVertex?
А fillrate проверить просто: поверни свою плоскость боком к камере, чтоб она типа в линию превратилась, и посмотри: если fps заметно вырос - то это fillrate...


 
qTorus   (2006-05-12 15:23) [15]


> Или может между glBegin и glEnd вызываешь glVertex?

Именно так и делаю.
Повернул плоскость - fps вырос в разы. Действительно, мал fillrate. Значит выходит, что FPS зависит от размеров полигонов не меньше, чем от их кол-ва?


 
ancara ©   (2006-05-12 15:45) [16]


> Именно так и делаю.

Зря, не делай так, юзай 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:59) [17]

Спасибо за совет, ancara ©, только вот геометрия у меня изменяется в каждом кадре. Попробую VertexArrays, может оно и побыстрее будет...


 
3DMax   (2006-05-13 01:28) [18]


> XProger ©   (12.05.06 01:48) [9]

У меня не получается наложить текстуру на объект через VBO, на одни треугольники ложится, другие остаются нетекстурироваными. При использовании VertexArrays все работает.



Страницы: 1 вся ветка

Текущий архив: 2007.04.15;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.043 c
2-1174645916
Romas81
2007-03-23 13:31
2007.04.15
Обход через tab элементов на разных панелях


5-1151409437
lookin
2006-06-27 15:57
2007.04.15
Специфический редактор свойства


15-1174327984
koha
2007-03-19 21:13
2007.04.15
Помогите собрать GPRS APN


2-1174631817
GeLLeR
2007-03-23 09:36
2007.04.15
ClientSocket


1-1171354927
ViToTiV
2007-02-13 11:22
2007.04.15
Как не активировать главную форму дочерними