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) 

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


@!!ex   (2006-07-19 18:26:00) [1]

>>лучше QueryPerfomanceCounter().

Чем лучше? Точнее.
Но требует гемора при использовании.
Плюс не всегда поддерживаеться.
А смысл? Нафиг те нано секи ловить?


a22   (2006-07-19 18:23:00) [2]

лучше QueryPerfomanceCounter(). посмотри в MSDN


Зм1й   (2006-07-19 15:36:00) [3]


> погрешность у него всего 16мс.

Ну тогда мне хватит :)
Всем спасибо за помощь.


@!!ex   (2006-07-19 15:06:00) [4]

>>Эврика! Спасибо большое, теперь всё работает! Кстати интересно то, что даже при установке пункта "вертикальная синхронизация" в настройках в значение Вкл. функция всё равно действует.

А ларчик просто открывался. :) Бывает.....

>>Но теперь возник ещё один вопрос :)
Вот говорят, что GetTickCount даёт неточные значения. А как тогда получить точные?

А оно тебе надо? Писал уже кучу проектов, не чувствую какой бы то ни было напряг от использования GetTickCount. Кста, погрешность у него всего 16мс.


Зм1й   (2006-07-19 14:27:00) [5]


> ancara ©   (19.07.06 14:05) [79]
> попробуй сделать свой rendering context текущим,
> wglMakeCurrent(..., ...);
> а затем вызови wglGetProcAdress

Эврика! Спасибо большое, теперь всё работает! Кстати интересно то, что даже при установке пункта "вертикальная синхронизация" в настройках в значение Вкл. функция всё равно действует.

Но теперь возник ещё один вопрос :)
Вот говорят, что GetTickCount даёт неточные значения. А как тогда получить точные?


ancara   (2006-07-19 14:05:00) [6]

попробуй сделать свой rendering context текущим,
wglMakeCurrent(..., ...);
а затем вызови wglGetProcAdress


@!!ex   (2006-07-19 14:05:00) [7]

>>А расширение-то есть

Ну собственно я так и думал.

Потому что даже если бы расширения не было бы, функция должна была бы загружаться. Просто возвращала бы Fail и все....

Выложи весь код своего юнита. С Uses и т.д.


Зм1й   (2006-07-19 14:03:00) [8]

Ступил, бывает :)
А расширение-то есть


@!!ex   (2006-07-19 13:58:00) [9]

Я надеюсь, ты его всунул после инициализации рендеринг контекста?
Это такая же GL функция, как, например,  glClear. И без контекста работать не будет.


Зм1й   (2006-07-19 13:55:00) [10]

Возвращает пустую строку...


@!!ex   (2006-07-19 13:50:00) [11]

Зм1й ©
StrPas (PChar(glGetString(GL_EXTENSIONS)))
Результат - строка со всеми поддерживаемыми расширениями.

Нужное, насколько я помню называеться:
WGL_EXT_swap_control


Зм1й   (2006-07-19 12:51:00) [12]


> Ах, ты, блин, онаж в оконном то не должна вааще реагировать!
>  Этож только
> в полноэкранном режиме должно работать!!!

Причём тут это? Функция не выполняется, она вообще не грузится из библиотеки...

> @!!ex ©

А как проверить поддержку расширения? :)


@!!ex   (2006-07-19 12:26:00) [13]

>>Ах, ты, блин, онаж в оконном то не должна вааще реагировать! Этож только в полноэкранном режиме должно работать!!!

Почему? Не вижу причин. Что мешает синхронизить отрисовку окна? Это раз.

В OpenGL, на скока я знаю, в отличие от DX нет отличия между FullScreen и Window.


grisme   (2006-07-18 23:36:00) [14]

Ну вот если я например пишу

function wglSwapIntervalEXT  (Interval: Integer): ByteBool; stdcall; external OpenGl32;
wglSwapIntervalEXT (0);


Не надо так писать(даже например).(: потому что эта функция входит в расширение OpenGL) и в библиотеке ее нет.) Если ты внимательно читал хэлп по ф-ии wglGetProcAddress, то не шайтанил бы так..:)

Cash ©   (18.07.06 22:53) [70]
Бред, доказательства в студию...:)


MeF Dei Corvi   (2006-07-18 23:02:00) [15]


> Ну вот если я например пишу

А ты пиши

var wglSwapIntervalEXT: function(interval: TGLint): Boolean; stdcall;
...
wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');


> Этож тольков полноэкранном режиме должно работать!!!

А что такое полноэкранный режим? По сути это же то же окошко, просто на весь экран? :)


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

> в оконном

Ах, ты, блин, онаж в оконном то не должна вааще реагировать! Этож только
в полноэкранном режиме должно работать!!!


Зм1й   (2006-07-18 21:57:00) [17]

Пожалуй, пока хватит готовиться :) (ещё целых три дня)

> @!!ex ©
> У меня тоже зватра экзамен

Удачи :)

> проверь поддержку этого расширения.

Как проверить?

> Такое ощущение, что ее вообще нету в dll'ке....

Ну вот если я например пишу

function wglSwapIntervalEXT  (Interval: Integer): ByteBool; stdcall; external OpenGl32;
wglSwapIntervalEXT (0);


то точка входа в процедуру не найдена...


> в оконном или полноэкранном режиме прога работает?

в оконном


Cash   (2006-07-18 20:24:00) [18]

...Можно с таймером влезти? :)
На счет GetTickCount, это бяка, я таймер сделал двояким, с одной стороны
на этом GetTickCount-е, а с другой -- на качественном таймере.
(Плюс, у меня еще проверяется поддержка Intel RDTSC, и если да, то
считается через тактовую частоту)

Дак вот, про качественный таймер:
WINAPI bool QueryPerformanceFrequency(int64);
Эта штука даст возможную частоту обновления таймера, и даст знать
возможен ли таймер вобще.

bool QueryPerformanceCounter(int64)
Эта штука даст показание качественного счетчика, и тоже даст понять
о возможности счета.

А про VSYNC -- там детонаторы стоят или ForceWare?
И, это, в оконном или полноэкранном режиме прога работает?


grisme   (2006-07-18 20:17:00) [19]

Такое ощущение, что ее вообще нету в dll'ке....

Дык кудаж она делась-то?(:


@!!ex   (2006-07-18 20:16:00) [20]

KreeS ©
Фича то в том, что функция с указателем не ассоциируеться.
Такое ощущение, что ее вообще нету в dll'ке....


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

Наверх

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