zenGl

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

zenGl

Сообщение murads60 » 23.02.2012 11:19:28

Кто подскажет как использовать zenGl в своих проектах ?
murads60
новенький
 
Сообщения: 12
Зарегистрирован: 21.01.2012 23:12:01

Re: zenGl

Сообщение Сквозняк » 27.02.2012 22:18:19

Запихнуть его в поток и пусть себе там работает :D Лазарусная форма в одном потоке, движок в другом, управление происходит через несколько глобальных переменных. К сожалению, отключить форму на время работы движка нельзя, поэтому нужно сделать её поменьше и запустить бесконечный цикл (с паузой) ожидающий изменения переменной - самый надёжный способ После закрытия окна zenGl может остаться окно зомби, но в линуксе это просто лечится процедурой добавляемой в zgl_window.pas
Код: Выделить всё
procedure wnd_AntiZombi; //убирает окно зомби
begin
{$IFDEF LINUX}
XSync( scrDisplay, X_false );
{$ENDIF}
end;

В общих чертах всё. Если будут вопросы поконкретнее, спрашивай.
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: zenGl

Сообщение Andru » 28.02.2012 10:16:08

Запихнуть его в поток и пусть себе там работает

Идиотское решение.

После закрытия окна zenGl может остаться окно зомби

Синхронизация давно там есть.

murads60
Смотри стандартные примеры.
Аватара пользователя
Andru
новенький
 
Сообщения: 13
Зарегистрирован: 28.09.2010 10:42:53

Re: zenGl

Сообщение Сквозняк » 28.02.2012 18:04:35

Синхронизация давно там есть.

И окна зомби остающиеся при некошерном использовании лазаруса, тоже давно. Не хватает ещё одной синхронизации.

Раз автор в теме то объясни почему для вывода звука с постоянной громкостью отличной от максимальной и известной заранее нужно выполнять
Код: Выделить всё
function  snd_Play( Sound : zglPSound; Loop : Boolean = FALSE; X : Single = 0; Y : Single = 0; Z : Single = 0 ) : Integer;
,получать номер канала и уже потом, в догонку регулировать громкость. Не лучше ли и быстрее для таких случаев, а их много, сразу выводить звук с нужной громкостью? Как-то так:
Код: Выделить всё
function  snd_Play2(Volume1 : Single; Sound : zglPSound; Loop : Boolean = FALSE; X : Single = 0; Y : Single = 0; Z : Single = 0 ) : Integer;
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32

Re: zenGl

Сообщение Andru » 29.02.2012 01:16:52

И окна зомби остающиеся при некошерном использовании лазаруса, тоже давно. Не хватает ещё одной синхронизации.

Ещё одной такой же, которая есть в wnd_Destroy? Да не иначе как говнокодите :)

,получать номер канала и уже потом, в догонку регулировать громкость. Не лучше ли и быстрее для таких случаев, а их много, сразу выводить звук с нужной громкостью? Как-то так:

Потому что для игр есть понятие default громкости, и она устанавливается через snd_SetVolume( nil, SND_ALL, Volume );

Но над расширением входных параметров я думал, пока просто для версии 0.2.x не охота было ломать API.

Раз автор в теме

Автор на этом далеком от gamedev'а и multimedia форуме бывает редко, а эта тема позабавила изначальным вопросом... нынче программисты не то что читать не умеют, так и вовсе ленятся что либо делать, сразу им подавай step by step инструкции, эх... :)
Аватара пользователя
Andru
новенький
 
Сообщения: 13
Зарегистрирован: 28.09.2010 10:42:53

Re: zenGl

Сообщение Сквозняк » 29.02.2012 02:13:59

Andru писал(а):Ещё одной такой же, которая есть в wnd_Destroy? Да не иначе как говнокодите
Ну так поучи пейсателей дров и видеосистем писать код не требующий двух синхронизаций. Но если подумать логически, тебе лишней синхронизации жалко? Не иначе вызов процедуры реализуется механически и потребляет много топлива.
Потому что для игр есть понятие default громкости, и она устанавливается через snd_SetVolume( nil, SND_ALL, Volume );
Тоже самое можно сделать изменив содержимое одной глобальной переменной и для этого не нужно лопатить английскую справку.
Сквозняк
энтузиаст
 
Сообщения: 1129
Зарегистрирован: 29.06.2006 22:08:32


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 203

Рейтинг@Mail.ru