Люди подскажите.
Программирую мебе игру...
Все было хорошо, пока не столкнулся с проблемой. Моя программа запускает поток обработки графики. Он работает отлично, все отрисовывается, плавно сколлится... Запускаю новый поток. Он обрабатывает путь движения спрайта и собственно само движение. И тут начинает все жутко тормозить. Даже не тормозить, а работать рывками. И это даже при том, что второй поток совершенно ничего не делает:
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 нифига не делает, но изза него тормозит.