Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Тормоза OpenGL   Найти похожие ветки 

 
Igor_ ©   (2003-09-25 16:34) [0]

Я этот вопрос задавал уже в форуме Media - ни кто ни чего не ответил, может здесь мне кто поможет?
У меня такая ситуация, я рисую на OpenGL достаточно простые объекты (если посчитать количество примитивов может будет их пару тысяч). При отрисовке комп заметно тормозит - процессор грузится на полную. Может быть такое, что все это обрабатывается процессором, а не видеокартой?
Этот вопрос возник потому, что игры, использующие OpenGL работают быстро, а все тестовые примеры тормозят. Говорят, что есть специальные команды, чтобы включить использование видеокарты, вместо процессора. Так ли это? И если так, то расскажите пожайлуста, чего надо делать.


 
Илья   (2003-09-25 17:43) [1]

Используй шейдеры(это-уж наверняка:))


 
Asteroid ©   (2003-09-26 02:04) [2]

Аппаратное ускорение в OpenGL по умолчанию, но можно попробовать добавить в PixelFormatDesciptor.dwFlags добавить PFD_GENERIC_ACCELERATED. Кстати, моя видеокарта не поддерживает аппаратное ускорение при 24 битах (серьезные тормоза).


 
Igor_ ©   (2003-10-08 15:05) [3]

Попробовал я этот флаг PFD_GENERIC_ACCELERATED ставить - скорость не меняется.


 
TButton ©   (2003-10-08 16:32) [4]

а я помню время когда пара сотен полигонов было офигенно круто... и как было круто если игра при етом не тормозила (сильно)... где ж ты моя молодость...


 
Asteroid ©   (2003-10-09 01:57) [5]

> TButton ©   (08.10.03 16:32) [4]
Doom будет жить! :)


 
asf   (2003-10-09 10:10) [6]

По поводу аппаратного ускорения: Вызови функцию DescribePixelFormat() и проверь наличие флага PFD_GENERIC_ACCELERATED
По поводу тормозов:
1. конвеер OpenGL очень критичен к объему данных, которые ты в него передаешь.. У видеокарты  есть потолок по числу вершин и объему памяти под текстуры. Для дешевых видеокарт превышение этого предела приводит к лавинообразному спаду быстродействия..
2. Считать нужно не число примитовов - а число вершин которые ты передаешь... а каждая вершина в полном объеме содержит 3 координаты самой точки, 3 координаты нормали, 2 координаты текстуры, причем все с плав.точкой обычно... Вот и считай сколько байт  нужно передать мамке в видюху для прорисовки одного кадра....(это при условии аппаратного ускорения), так что причиной тормозов может быть:
- Нехватка быстродействия мамки по передачи данных в видеокарту... Проверено - быстродействие одной и той же видюхи на разных мамках (или просто разных CPU) отличается, причем прямопропорционально быстродействию мамки. Но скорей всего в твоем случае причина либо в некорректной последовательности вызовов gl-функций, либо в слишком большом объеме обрабатываемой видюхой данных...
-Неправильня  комбинация gl-функций может резко тормозить всю работу... кроме того нужно еще учитывать: число источников света; туман; способ задания цвета для примитива (glColor или glMaterial, в последнем случае число переключений glMaterial напрямую влияет на быстродействие);  число вызовов glTranslate() и.т.п также критично;  использование аппаратного отсечения задних поверхностей повышает быстродействие; вообще сколько вершин растеризуется за кадр, желательно использовать различные алгоритмы отсечения невидимых объектов и в карту передавать информацию только по видимым; ограничиваешь ли ты частоту кадров или нет, в последнем случае твой проц всегда будет загружен на 100%. Короче ньюансов очень мног ибо GL-штука тонкая и капризная, поэтому советую хорошо изучить по нему документацию и экспериментировать с различными способами достижения одного и того же эффекта...
P.S. Более детально могу ответить по e-mail или icq


 
Мусор   (2003-10-11 21:58) [7]

ASF Хорошо написал. А что уважаемый думает о GLScene ?



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

Форум: "Игры";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
14-1079610954
GrayFace
2004-03-18 14:55
2004.04.11
Пропажа тем форума


1-1082036179
alienserg
2004-04-15 17:36
2004.04.11
Вызов процедуры родительского окна из формы в DLL. Как?


1-1080013985
dm37
2004-03-23 06:53
2004.04.11
формирование числа со знаком


6-1079643480
pirat
2004-03-18 23:58
2004.04.11
как насильно завершить соединения TIdTCPServer


4-1079550593
atkachen
2004-03-17 22:09
2004.04.11
Синхронизация потоков





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский