Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DelphiX на разных машинах - полупрозрачность и скорость [Delphi, Windows]


VK ©   (2006-02-20 10:14:00) 

Добрый день!
Пишу арканоид на DelphiX.
На 1 машине (атлон 2200+, радеон 9600) - все нормально.
На 2 машине (P4 2400, Intel 82865G) столкнулся с проблемой:
  Image.DrawAlpha(Engine.Surface,Rect,0,100);
- Image вообще не отображается. Если
  Image.DrawAlpha(Engine.Surface,Rect,0,255);
то отображается, естественно непрозрачно.

И еще вопрос: как сделать, чтоб на разных машинах скорость движения спрайта была бы одинаковой? (На 2 машине все движется значительно быстрее)


VK   (2006-02-21 15:08:00) [1]

Интересно.... после установки DXDraw.Display в 16 битный режим полупрозрачность стала отображаться и на 2 машине. До этого стоял 32 битный


KreeS   (2006-02-20 21:16:00) [2]

Может там с дровами или с ДиректХ проблемы?


VK   (2006-02-20 16:42:00) [3]

По полупрозрачности:
 Пример с Image.DrawAlpha из пакета с исходниками тоже не отображает полупрозрачность на 2 машине. Нашел в примерах другой DrawAlpha из модуля DXFusion, но там уж очень мудрено, хочется, чтоб обычный работал.
Никто, что ли не встречал проблему?


VK   (2006-02-20 11:16:00) [4]

[1] - спасибо!


KreeS   (2006-02-20 10:53:00) [5]

А вообще в ДелфиХ, помоему есть таймер специально для этого :)
а насчет прозрачности незнаю


KreeS   (2006-02-20 10:37:00) [6]

Нужно считать тики процессора и двигать спрайт только когда прошло нужное кол-во времени.

var
 PrevTime: Int64;
 CurTime: Int64;
begin
 CurTime := GetTickCount;
 PrevTime := CurTickCount;

 repeat
   DrawScene;  // здесь рисуется вся сцена
   
   CurTime := GetTickCount;
   if CurTime - PrevTime >= 50 then  // каждые 50 милисекунд
   begin
     GameDoStep;  // здесь обновляются позиции спрайтов и вся остальная физика
     PrevTime := CurTime;
   end;

   Application.ProcessMessages;
 until Application.Terminated;
end;


Наверх

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