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

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

"Вертикальная синхронизация" [Delphi, ogl]


Страницы:   1 2 3 4 5

Зм1й ©   (2006-07-16 21:13:00) 

Как её програмно (и вообще) отключить? И ещё вопрос: что она на самом деле из себя представляет? :)


TWINc   (2006-07-17 01:17:00) [81]

а я сам ограничиваю фпс ;)


Cash   (2006-07-16 23:49:00) [82]

А я ваще эту фичу на усмотрение юзверя оставляю... :)


@!!ex   (2006-07-16 23:34:00) [83]

Ваще то, для отключения в OpenGL достаточно:
wglSwapIntervalEXT(1); - для включения.
wglSwapIntervalEXT(0); - для выключения.

А зачем ее отключать? Чем мешаеться?
ИМХО отключать нужно только тогда, когда реальные FPS необходимо посчитать.


Cash   (2006-07-16 22:22:00) [84]

... А через Direct3D эта блямба отрубается так:

// В структуре PresentParams: TD3DPresent_Parameters делаем так:
  PresentParams.PresentationInterval := D3DPRESENT_INTERVAL_ONE; // для включения

  PresentParams.PresentationInterval := D3DPRESENT_INTERVAL_IMMEDIATE; // для выключения

// А потом:
Device.Reset(PresentParams);


KreeS   (2006-07-16 22:07:00) [85]

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

Через OpenGL...

procedure UseVSync(ToUse: Boolean);
var
 wglSwapIntervalEXT   : function(Interval: Integer) : ByteBool; stdcall;
 wglGetSwapIntervalEXT: function                    : Integer;  stdcall;
begin
 wglSwapIntervalEXT    := wglGetProcAddress('wglSwapIntervalEXT');
 wglGetSwapIntervalEXT := wglGetProcAddress('wglGetSwapIntervalEXT');
 if addr(wglGetSwapIntervalEXT) <> nil then
   if wglGetSwapIntervalEXT <> ord(ToUse) then
   begin
     if addr(wglSwapIntervalEXT) <> nil then
       wglSwapIntervalEXT(ord(ToUse));
   end;
end;


Страницы:   1 2 3 4 5

Наверх

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