потоки :(
От: Zip Россия none
Дата: 06.05.05 08:57
Оценка:
Люди подскажите.
Программирую мебе игру...
Все было хорошо, пока не столкнулся с проблемой. Моя программа запускает поток обработки графики. Он работает отлично, все отрисовывается, плавно сколлится... Запускаю новый поток. Он обрабатывает путь движения спрайта и собственно само движение. И тут начинает все жутко тормозить. Даже не тормозить, а работать рывками. И это даже при том, что второй поток совершенно ничего не делает:


procedure DrawBuffer;
begin
 while DrawThreadActive do
 begin
  if ActiveWindow then
  begin
   ReadMouse;
   ReadKeyboard;
   DDForm.BackBufferSurface.BltFast(CutScreenRect.Left,UpPoint, FDDSFace, @CutScreenRect, DDBLTFAST_WAIT);
   CheckButtons;
   Spetifica;
//   ShowFPS;
   DDForm.BackBufferSurface.BltFast(DDInput.MouseState.MousePosX,DDInput.MouseState.MousePosY,FDDSMouse,@CutCursorRect,
                                    DDBLTFAST_WAIT+DDBLTFAST_SRCCOLORKEY);
    DDResult:=DDForm.PrimarySurface.Flip(nil, DDFLIP_WAIT);
   if DDResult = DDERR_SURFACELOST then DDResult :=RestoreAll;
  end;
 end;
end;

procedure SpriteManagement;
begin
 while SpriteThreadActive do
 begin
  if ActiveWindow then
  begin
//   if Avatar.Status<>ssStay then WorkWithSprite(Avatar);
  end;
 end;
end;


 DrawThread:=CreateThread(nil,0,@DrawBuffer,nil,0,DrawThreadIdent);
 SpriteThread:=CreateThread(nil,0,@SpriteManagement,nil,0,SpriteThreadIdent);


процедуру DrawBuffer показал просто так, чтобы показать, что она чтото делает, а вот SpriteManagement нифига не делает, но изза него тормозит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.