Einzelnen Beitrag anzeigen

.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#13

Re: Projekt bitte testen - Lag?

  Alt 23. Mai 2008, 14:17
Oh, littleDaves Betrag hatte ich übersehen, sorry.Also ich berechne die Frames in einem von mir erstellten Timer, der mittles On-Idle funktioniert, ich denke es liegt daran!?

Zu dem Problem: Hm also ich benutze XP-Home, ihr Pro, vll liegt es daran. Aber ich kann mir nicht erklären wo da ein Problem sein sollte...vielleicht bei den Einstellungen, mit denen DirectX initialisiert wird. Ich stelle das mal rein:
Delphi-Quellcode:
constructor T2DXSurface.Create(_Handle: hWnd; _Fullscreen: Boolean; _Width, _Height: Longint);
var
  D3DPP: TD3DPresent_Parameters;
  D3DDM: TD3DDisplayMode;
  DType: TD3DDevType;
  D3DCaps9: TD3DCaps9;
  HardwareVertexProcessing: Boolean;
  VertexProcessing: Integer;
begin
  //Initialisierung: IDirect3D9-Interface
  D3D := Direct3DCreate9(D3D_SDK_VERSION);
  if (D3D = nil) then
    Exit;
  //Present_Parameters
  FillChar(D3DPP, sizeof(D3DPP), 0);
  with D3DPP do
  begin
    Windowed := not _Fullscreen;
    SwapEffect := D3DSWAPEFFECT_DISCARD;
    if (_Fullscreen) then
    begin
      BackBufferWidth := _Width;
      BackBufferHeight := _Height;
      BackBufferFormat := D3DFMT_A8R8G8B8;
    end
    else
    begin
      if failed(D3D.GetAdapterDisplayMode(D3DADAPTER_DEFAULT, D3DDM)) then
        Exit;
      BackBufferFormat := D3DDM.Format;
    end;
  end;
  //Kontrollieren ob die Grafikkarte HardwareVertexProcessing unterstützt
  D3D.GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DCaps9);
  HardwareVertexProcessing := D3DCaps9.DevCaps and D3DDEVCAPS_HWTRANSFORMANDLIGHT <> 0;
  If HardwareVertexProcessing then
    VertexProcessing := D3DCREATE_HARDWARE_VERTEXPROCESSING
  else
    VertexProcessing := D3DCREATE_SOFTWARE_VERTEXPROCESSING;
  //Hardwarebeschleunigung
  DType := D3DDEVTYPE_HAL;
  //Erstellen des IDirect3DDevice9
  if failed(D3D.CreateDevice(D3DADAPTER_DEFAULT, DType, _Handle, Vertexprocessing, D3DPP, Device)) then
    Exit;
  //Erfolgreiche Initialisierung

  //Einstellungen
  FWidth := _Width;
  FHeight := _Height;
  Device.SetRenderState(D3DRS_LIGHTING, Longword(False));
  Device.SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
  Device.SetRenderState(D3DRS_ZENABLE, Longword(FALSE));
  Device.SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
  Device.SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2);
end;
Irgendwer ne Idee? Kenne mich mit solchen Sachen leider nicht so aus (Fehlern und so ).
  Mit Zitat antworten Zitat