#1 13.01.2011 13:02:40

Peter-Pascal
Member
Registriert: 26.02.2007
Beiträge: 63

GetAdapterIdentifier

Hallo zusammen,

ich versuche mich in DirectX einzuarbeiten und bin noch ziemlicher Anfänger. Bekomme schon einiges hin, aber bei vielen habe ich einfach auch Verständnisschwierigkeiten, da ich nicht so der Gamer bin.

Was nicht funktioniert (ich habe es in einer anderen Rubrik schon mal gefragt) ist

Code: delphi

ok := fdirect3d9.getadapteridentifier(d3dadapter_default,0,fadapteridentifier);


Ok als HResult ist D3D_OK, aber FAdapterIdentifier vom Typ TD3DAdapterIdentifier9 hat nur #0 und für den Namen kleine Kästchen. Egal was ich versuche, ob ich die Antwort als nullterminierten String auffasse es gibt mir nicht den Namen der Grafikkarte.

Der Aufruf

Code: delphi

ok := fdirect3d9.getadapterdisplaymode(d3dadapter_default,fdisplaymode);


funktioniert einwandfrei. Auch kann ich Primitive darstellen und transformieren.

Dann noch eine Verständnisfrage, ich hoffe sie ist hier erlaubt und nicht allzu blöd: In vielen Bücher steht, dass die Darstellung der Primitive mit Triangle List die flexiblelste ist und bei den Programmierern am beliebtesten (steht so in einem Buch). Warum? Für mich ist die Triangle List nur umständlich. Eventuell wegen der Texturen? Nun da habe ich jetzt auch Probleme eine Textur drauf zu ziehen.

Vielen Dank für eure Mühe.
Ich programmiere mit Delphi 2010 und habe Direct3D9 ( 8. 12.2005) von hier kopiert.

Gruß Peter-Pascal


Heute ist nicht alle Tage – ich komm wieder, keine Frage

Offline

 

#2 27.08.2011 15:24:35

Peter-Pascal
Member
Registriert: 26.02.2007
Beiträge: 63

Re: GetAdapterIdentifier

Ich habe die Lösung gefunden:

Code: delphi

pd3dadapter_identifier9 = ^td3dadapter_identifier9;
  td3dadapter_identifier9 = packed record
    driver      : array [0..max_device_identifier_string - 1] of ansichar; //hier war urspünglich nur char
    description : array [0..max_device_identifier_string - 1] of ansichar;// wie oben
    devicename  : array [0..31]  of ansichar; (* Device name for GDI (ex. \\.\DISPLAY1) *)//wie oben

    driverversionlowpart : longword;     (* Defined for 16 bit driver components *)
    driverversionhighpart : longword;

    vendorid : longword;
    deviceid : longword;
    subsysid : longword;
    revision : longword;

    deviceidentifier : tguid;

    whqllevel : longword;

  end;


Ab 2009 hat sich folgendes geändert:
In der Hilfe: Unicode in RAD Studio
Der neue Standard in RAD Studio für den Typ string ist der Typ UnicodeString.

In Delphi sind Char- und PChar-Typen jetzt WideChar- bzw. PWideChar-Typen.

so habe ich oben nur Char durch AnsiChar ausgetauscht und es funktioniert.

Beitrag geändert von Peter-Pascal (27.08.2011 19:54:15)


Heute ist nicht alle Tage – ich komm wieder, keine Frage

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson