![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Вертикальная синхронизация" [Delphi, ogl]
Зм1й © (2006-07-16 21:13:00)Как её програмно (и вообще) отключить? И ещё вопрос: что она на самом деле из себя представляет? :)
KreeS (2006-07-18 20:01:00) [21]Может дело в дровах?
@!!ex (2006-07-18 19:26:00) [22]grisme ©
Возможно, конечно. Но ИМХо мало вероятно.... ХОтя кто знает.
Зм1й,
проверь поддержку этого расширения.
@!!ex (2006-07-18 19:24:00) [23]Ни пуха.
У меня тоже зватра экзамен. :)Правда экзамен по информатике. Че к нему готовиться? :)
grisme (2006-07-18 19:23:00) [24]А может просто расширение OpenGL самой картой не поддерживается?
Зм1й (2006-07-18 19:21:00) [25]
> @!!ex © (18.07.06 19:13) [58]
Не покатило.
Завтра надо подумать, но сегодня со всеми прощаюсь, т. к. надо готовиться к долбаным экзаменам :(
@!!ex (2006-07-18 19:15:00) [26]grisme ©
Проблема у него в том, что функция не грузиться из dll'ки(на это указывает нулевой указатель). А это ну никак не может зависить от настроек драйвера.
grisme (2006-07-18 19:14:00) [27]@!!ex © (18.07.06 19:08) [55]
Проблема у него всего лишь в том, что включена/выключена принудительно синхронизация..:) Выключить/включить ее программно невозможно, если только драйвер не надрессирован на "интимные" отношения(чай-кофе-потанцуем :0) с внешними приложениями, но это не гарантировано и не на всех дровах может быть такая багофича...Единственная альтернатива - это либо жевать бублики(читай смириться), либо писать "нечто", что напрямую будет работать с видеокартой, обходя драйвер
@!!ex (2006-07-18 19:13:00) [28]http://www.afera-net.narod.ru/opengl32.rar
У тебя не старая операционка. Боюсь проблема не в этом........
проверь этот вариант, не прокатит(а он скорее всего не прокатит), подумаем, че еще может быть.
Зм1й (2006-07-18 19:11:00) [29]
> Какая Windows?
XP home sp2
> В принципе я могу выложить opengl32.dll
Выложи пожалуйста
@!!ex (2006-07-18 19:10:00) [30]>>Блин, посмотрел я в книге Гайдукова...:) Он не говорил, как это обходить, он просто сказал, что драйвер карточки может игнорить твои указания насчет верт.синхронизации (если принудительно включена), поэтому программное переключение в таком случае невозможно..Пришивай на мануал-переключение(причем выводи, если невозможно выключить/включить) либо пиши собственный драйвер для видео-системы(аля Quake 3)
Проблема явно не в этом.
Учитывая, что функция не грузиться.
grisme (2006-07-18 19:08:00) [31]Блин, посмотрел я в книге Гайдукова...:) Он не говорил, как это обходить, он просто сказал, что драйвер карточки может игнорить твои указания насчет верт.синхронизации (если принудительно включена), поэтому программное переключение в таком случае невозможно..Пришивай на мануал-переключение(причем выводи, если невозможно выключить/включить) либо пиши собственный драйвер для видео-системы(аля Quake 3)
@!!ex (2006-07-18 19:08:00) [32]В принципе я могу выложить opengl32.dll.
Сделаешь backup, заменишь, глядишь все заработает.
Хотя, конечно, проблема может быть в другом.
@!!ex (2006-07-18 19:02:00) [33]Значит у тебя по каким то причинам не доступно расширение OpenGL.
Какая Windows?
Зм1й (2006-07-18 18:44:00) [34]
> procedure UseVSync(ToUse: Boolean);
> var
> wglSwapIntervalEXT : function(Interval: Integer) : ByteBool;
> stdcall;
> begin
> wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
>
> wglSwapIntervalEXT(ord(ToUse));
> end;
Access Violation
> procedure UseVSync(ToUse: Boolean);
> var
> wglSwapIntervalEXT : function(Interval: Integer) : ByteBool;
> stdcall;
> begin
> wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
>
> if addr(wglSwapIntervalEXT)<>nil then
> wglSwapIntervalEXT(ord(ToUse));
> end;
Не работает, потому что условие не выполняется
Зм1й (2006-07-18 18:39:00) [35]Нет, они равны nil
@!!ex (2006-07-18 18:37:00) [36]Или вот в таком, чтобы не падало:
procedure UseVSync(ToUse: Boolean);
var
wglSwapIntervalEXT : function(Interval: Integer) : ByteBool; stdcall;
begin
wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
if addr(wglSwapIntervalEXT)<>nil then
wglSwapIntervalEXT(ord(ToUse));
end;
@!!ex (2006-07-18 18:37:00) [37]Функция кастрированная, если все будет плохо, упадет при обращении к функции по адрес NULL, но зато есть от чего плясать.
@!!ex (2006-07-18 18:35:00) [38]Попробуй вот в таком виде:
procedure UseVSync(ToUse: Boolean);
var
wglSwapIntervalEXT : function(Interval: Integer) : ByteBool; stdcall;
begin
wglSwapIntervalEXT := wglGetProcAddress('wglSwapIntervalEXT');
wglSwapIntervalEXT(ord(ToUse));
end;
@!!ex (2006-07-18 18:32:00) [39]Тааак. Что не рабоает? Дебаггером смотрел, указатели все корректные?
Зм1й (2006-07-18 18:20:00) [40]
> @!!ex © (18.07.06 18:11) [43]
Так этот код не действует, как оказалось