hi leute
ich arbeite grade mit directx (9 sdk) und möchste im meiner form einen bereich haben wo meine direct x engine nach dem initialisieren angezeigt wird...
wie geht das ?
unter anderem gebe ich direct x die verfügung über meine form in:
Delphi-Quelltext
1:
| hDeviceWindow:=Handle; |
aber ich wüsste nicht wie der code aussehen sollte um direct x meinetwegen in einem panel oder paintbox oder so auftreten zu lassen. wie setze ich die eingrenzung am besten um ?
der initialisierungsprozess sieht so aus :
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| procedure TForm1.D3DInit; var hr : HRESULT; d3dpp : TD3DPRESENTPARAMETERS; begin lpd3d:=Direct3DCreate9(D3D_SDK_VERSION); if(lpd3d=nil) then FatalError(0,'Fehler beim Erstellen von Direct3D!'); Konsole.text:=Konsole.text + '<' + gettime + '> Direct3D SDK Version 9 geladen.' + #13#10;
ZeroMemory(@d3dpp, SizeOf(d3dpp));
with d3dpp do begin
SwapEffect:=D3DSWAPEFFECT_DISCARD; hDeviceWindow:=Handle; BackBufferCount:=1; Konsole.text:=Konsole.text + '<' + gettime + '> BackBuffer erstellt: 1.' + #13#10;
Windowed := TRUE; Konsole.text:=Konsole.text + '<' + gettime + '> Starte im Fenstermodus.' + #13#10; BackBufferWidth := 640; BackBufferHeight := 480; BackBufferFormat := D3DFind16BitMode; Konsole.text:=Konsole.text + '<' + gettime + '> BackBuffer Format ist 16bit.' + #13#10; end;
hr:=lpd3d.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, @d3dpp, lpd3ddevice); Konsole.text:=Konsole.text + '<' + gettime + '> Direct3D Device erschaffen.' + #13#10; if FAILED(hr) then FatalError(hr,'Fehler beim Erzeugen des 3D-Device'); Application.OnIdle := OnIdle; end; |
wie begrenze ich den bereich ?