Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
5-1151662140
Shuric
2006-06-30 14:09
2007.04.15
ReadComponent


10-1131124987
Leda
2005-11-04 20:23
2007.04.15
Как кинуть данные в Excel?


15-1174380182
ANB
2007-03-20 11:43
2007.04.15
Инсталляшка для БД на оракле


2-1174906877
Roman_S
2007-03-26 15:01
2007.04.15
?????????? вместо Копировать


15-1174288578
novoalex
2007-03-19 10:16
2007.04.15
Сабж. Про приборы учета.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский