Форум: "Игры";
Текущий архив: 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.037 c