Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#11

Re: PC auf Vista Kompatibilität testen (Pixel Shader 2.0)

  Alt 24. Jan 2007, 09:49
Zitat von Alex_kfm:
Das mit dem DirectX 9 ist klar. Ich werde mal zusehen, dass ich vorher abfrage, ob die richtige DirectX Version überhaupt installiert ist. Weiss jemand zufällig auf die Schnelle, wie man das am sinnvollsten macht? Ich könnte ja auf das Vorhandensein der d3dx9.dll prüfen, doch das scheint mir eine wenig saubere Methode zu sein.
Das waere auch mein erster gedanke gewesen. Man kann aber auch in der Registry nachgucken. Aaber: Nachdem du sowieso nicht direkt auf die Direct3DCreate9-Funktion aus der d3d9.dll verweisen kannst, wuerde es Sinn machen, einfach nur auf das Vorhandensein der dll zu achten, weil man sie dynamisch laden muss:
Delphi-Quellcode:
function CreateD3D(): IDirect3D9;
type
  TCreateD3D = function(DWORD): IDirect3D9;
var
  Creation: TCreateD3D;
  D3D9Dll: HMODULE;
begin
  result := nil; //Wenn Direct3D9 nicht da is, wird nil zurueckgegeben
  D3D9Dll := LoadLibrary('d3d9.dll');
  if (D3D9Dll = 0) then
    exit;
  Creation := TCreateD3D(GetProcAddress(D3D9Dll, 'Direct3DCreate9');
  if (Creation = nil) then
    exit;
  result := Creation(D3D_SDK_VERSION);
end;
Du musst aber acht geben: Du darfst nicht mehr einfach die Direct3D-Unit einbinden, dort wird naemlich statisch auf die Funktionen verlinkt. Du musst stattdessen die Deklaration des IDirect3D9-Interfaces mitsamt den benoetigten Typen rauskopieren und so dann verwenden.

@RainerO: Der Code ist etwas suboptimal Er erstellt extra fuer die Pruefung ein Fenster und ein Device, dabei ist das nicht noetig, weil auch das Direct3D9-Interface die benoetigten Funktionen mitbringt

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat