Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FPS


Xerx ©   (2004-07-14 08:19:00) 

Объясните, почему у меня FPS не поднимается выше 72? Словно OpenGL использует вертикальную синхронизацию по-умолчанию! Весь движок - заливка экрана черным цветом!!! И все! Почему?


Xerx   (2004-07-28 04:22:00) [1]

Я выключил в системе ограничение по FPS и получил 487. А как снять это ограничение програмно в системе (без OpenGL) раз оно там есть?


Xerx   (2004-07-26 04:28:00) [2]

И что мне делать, если у меня версия 1.4.0. Обновляться прикаждой перестановке системы и вместе с программой поставлять обновление OpenGL?


Magikan   (2004-07-19 03:41:00) [3]

Версия - это поддержка на уровне OpenGL (самой графической библиотеки). Если карточка от nvidia, то OpenGL-библиотека поставляется вместе с драйверами. Насчет ATI не знаю


Xerx   (2004-07-18 04:42:00) [4]

> Magikan
Ну да, все так. wglSwapIntervalEXT2(0); - вызывается, но разницы нет. А как проверить версию OpenGL? glGetString(GL_VERSION)?
Версия - это поддержка на уровне видео карты?


Magikan   (2004-07-16 04:33:00) [5]

Это действует в полноэкранном режиме, где и происходит вертикальная синхронизация


Magikan   (2004-07-16 04:31:00) [6]

Xerx ©,
OpenGL'евское расширение wglSwapIntervalEXT доступно с версии OpenGL 1.12

Объявляешь тип (прототип) функции wglSwapIntervalEXT:

type
wglSwapIntervalEXT_Func = function (i: Integer): Boolean; stdcall;


Далее где-нибудь объявляешь переменную этого типа, которая и будет являться функцией расширения

var
wglSwapIntervalEXT2: wglSwapIntervalEXT_Func;


Дальше нужно инициализировать переменную (получить адрес расширенной функции)

wglSwapIntervalEXT2:=wglSwapIntervalEXT_Func(wglGetProcAddress('wglSwapIntervalEXT'));


Проверяешь, произошла инициализация или нет. Если произошла, отключаешь синхонизацию

if @wglSwapIntervalEXT2<>nil then
 wglSwapIntervalEXT2(0);


Если хочешь обратно включить синхронизацию, то задаешь
wglSwapIntervalEXT2(1);


Xerx   (2004-07-16 04:29:00) [7]

>Magikan
А что-то разницы ни в 1 FPS!


Xerx   (2004-07-16 04:11:00) [8]

> Колбасьев
А то я не знаю! 3 месяца убил для 860 FPS в VESA в Паскале.
> ПсихЪ_просто
То, что я давно искал! И так просто!


Magikan   (2004-07-15 03:53:00) [9]

Млин. Это старые наработки, где я SDL библиотеку использовал.
В винде нужно вместо SDL_GL_GetProcAddress использовать wglGetProcAddress (стандартная WinAPI'евская функция)


Magikan   (2004-07-15 03:49:00) [10]

И еще тип нужно определить

type
 wglSwapIntervalEXT_Func = function (i: Integer): Boolean; stdcall;//cdecl;

var
 wglSwapIntervalEXT2: wglSwapIntervalEXT_Func;


Magikan   (2004-07-15 03:47:00) [11]


 wglSwapIntervalEXT2:=wglSwapIntervalEXT_Func(SDL_GL_GetProcAddress('wglSwapIntervalEXT'));
if @wglSwapIntervalEXT2<>nil then
  wglSwapIntervalEXT2(0);


ПсихЪ_копия   (2004-07-15 00:07:00) [12]

Ссылку-то я дал, но вот как заюзать ту функцию - не знаю Может кто поделится? (: Каковы параметры инмпортированной функции?


ViK   (2004-07-14 23:27:00) [13]

Это твои дрова используют синхронизацию по умолчанию, в детонаторе есть три опции:
1) всегда выкл
2) по умолчанию выкл.
3) по умолчанию вкл.
Измени эту опцию и будет у тебя 300 фпс


ПсихЪ_просто   (2004-07-14 17:15:00) [14]


> Колбасьев ©   (14.07.04 15:40) [3]

Получается, что OpenGL по умолчанию тормозит систему.


Колбасьев   (2004-07-14 15:40:00) [15]

Тем более что реально обновление как раз и будет с данной частотой. Ведь обычно FPS в играх - не количество кадров сменяющихся на экранев секунду, а количество кадров сменяющихся в памятив секунду.


ПсихЪ_просто   (2004-07-14 09:07:00) [16]

http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1088438773&n=9


Magikan   (2004-07-14 08:41:00) [17]

А он и использует по умолчанию вертикальную синхронизацию


Наверх

Титульная страница Поиск, карта сайта Написать письмо