![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]А он и использует по умолчанию вертикальную синхронизацию