Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Проблемы с OpenGL и фулскрин.


Автор: Гость_motor 31.10.2004, 01:28
Проблемма вот какая. Сделал я типо игрушки в openGL - простенько без наворотов, без теней и источник света только один. Сначало все было нормально, но когда я начал делать более детализированные объекты(с большим числом полигонов) начало тупить и идти чуть ли не по кадрам, хотя на всем уровне полигонов всего наберется не больше 1000. Конечно может это я где-нить наглючил... 9)
Но уменя такое ощущение что это сдох OpenGL.
Подскажите как ускорить вывод графики.

Еще есть вторая проблемма. Когда я включаю полноэкранный режим. У монитора становится частота 60 гц. Шо с этим поделать?

Автор: chipset 31.10.2004, 01:55
Чем выводишь полигоны на экран?
Уж не glBegin/glEnd ли?
Юзай glDrawArrays()..

Автор: Гость_motor 31.10.2004, 02:27
Да именно им родимым..... 8)
Попробую заюзать этот glDrawArrays()


Автор: timson 31.10.2004, 08:04
glDrawArrays() на много не увеличит fps, проблема скорее не в этом...
выводил нескоко десятков тысяч (~50-70) треугольников с пом. glBegin(GL_TRIANGLES), да ни че.. fps не падал ниже 15 при разрешении 800х600..

дело в другом.
может быть включил glEnble() че-нить не то. (например, только включение GL_STENCIL_TEST в билдере - кошмар fps ~ 5-7)..

пробуй откл. по одной функции, и ищи так слабое место.

еще для оптимизации вкл.
Код
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);//отображение лицевых граней
glCullFace(GL_BACK);//отображение не[s]лицевых граней


Цитата
Когда я включаю полноэкранный режим. У монитора становится частота 60 гц. Шо с этим поделать

включаешь так:
Код
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);

Если да то пробуй
Код
dmScreenSettings.dmDisplayFrequency = 85;


хотя при устанавливаемом разрешении, такая частот может не поддерживаться, проверь:
Код
BOOL EnumDisplaySettings(

   LPCTSTR lpszDeviceName, // specifies the display device
   DWORD iModeNum, // specifies the graphics mode
   LPDEVMODE lpDevMode // points to structure to receive settings
  );

Автор: Гость_motor 31.10.2004, 15:31
Нда прикольная штука этот GL_CULL_FACE
Тока пришлось пару полигонов перерисовать.
А вообще OpenGL убирает полигоны которые не поподают в угол зрения?

Автор: chipset 31.10.2004, 15:44
Цитата

А вообще OpenGL убирает полигоны которые не поподают в угол зрения?

Нет вроде..
timson
Спасибо огромное. Попробую :)

Автор:  2 Motor 12.11.2004, 06:32
Всякую хрень тебе тут наболтали.

Надо просто грамотно юзать glBegin() и glEnd().

Если ты пихаешь в цикл их, то надо задуматься: может можно сделать проще и не пихать?
Ибо тормоза идут, по большей части, из-за переключение граф. режимов в OGL'е.

Автор: DENNN 12.11.2004, 10:04
Нда, тыкнуть пальцев в проблемный код, которого не видел - это всегда сложно smile
Вообще, очень настораживает фраза
Цитата
хотя на всем уровне полигонов всего наберется не больше 1000. Конечно может это я где-нить наглючил...

А так, как верно сказали в предыдущем посте, при таком О-О-Очень маленьком количестве полигонов проблемы вероятно просто в неправильном выводе на граф. конвеер.
Добавлено @ 10:05
P.S. Поверь мне - при 1000 полигонов без теней и спец. эффектов нарисовать сцену можно и на самой слабой машине без проблем.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)