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