Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#3

AW: DirectX9 Header für 64Bit

  Alt 17. Sep 2018, 13:59
Danke erst mal für den Code.
Mein Problem ist nicht das erstellen der IDirect3DDevice9-Instanz das funktioniert mit gleichen Code unter 32Bit.
Aber nicht unter 64Bit.

Delphi-Quellcode:
function BuildDirect3d(_hMediaWindow: HWND; var m_pD3DDevice: IDirect3DDevice9; var ErrStr: string): BOOL;
var
   hr: HRESULT;
  m_pD3DDirect3d: IDirect3D9;
  d3ddm: D3DDISPLAYMODE;
  d3dpp: D3DPRESENT_PARAMETERS;
begin
  result := false;
  ErrStr := 'No Error';

   m_pD3DDirect3d := Direct3DCreate9(D3D_SDK_VERSION);
   if (m_pD3DDirect3d = nil) then
  begin
     ErrStr := ReportError('Cannot initialize Direct3D', E_FAIL);
      exit;
   end;

  hr := m_pD3DDirect3d.GetAdapterDisplayMode(D3DADAPTER_DEFAULT, d3ddm);
   if (FAILED(hr)) then
  begin
     ErrStr := ReportError('Cannot get display adaptater infos from Direct3d', hr);
      exit;
   end;

  FillChar(d3dpp, sizeof(d3dpp), 0);
  d3dpp.Windowed := TRUE;
  d3dpp.SwapEffect := D3DSWAPEFFECT_DISCARD;
  d3dpp.BackBufferFormat := d3ddm.Format;
  d3dpp.hDeviceWindow := _hMediaWindow;

  hr := m_pD3DDirect3d.CreateDevice(D3DADAPTER_DEFAULT, // always the primary display adapter
                              D3DDEVTYPE_HAL,
                              0,
                              D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                              @d3dpp,
                              m_pD3DDevice);
   if (FAILED(hr)) then
     ErrStr := ReportError('Cannot create a Direct3d device', hr)
  else
     result := TRUE;
end;
Fehler:
'Cannot create a Direct3d device : COM Error 0x8876086C' (Nur mit 64Bit!)

PS:
Es liegt an den Headern..

gruss

Geändert von EWeiss (17. Sep 2018 um 14:11 Uhr)
  Mit Zitat antworten Zitat