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) 

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


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]

Так этот код не действует, как оказалось


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

Наверх

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