Форум: "Игры";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
ВнизОптимизация 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.075 c