Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.12.2004, 14:01

D3D Adapterinformation nur mit if(FAILED(....)) ??

Ic habae das erste Beispielprogramm aus Kapitel 2 abgetippt zum besseren Verständnis ein bischen rumgespielt. Aus Faulheit habe ich die if-Abfrage, ob die Adapterinformationen gefunden werden konnten einfach weggelassen.
Die ausgegebenen Strings waren daraufhin allerdings nur Datenmüll. Also habe ich die Abfrage eingefügt und siehe da: Das Fenster gibt saubere Adapter-Informationen aus!

Jetzt wüsste ich echt gern, weshalb ohne die Abfrage D3DAPAPTER_IDENTIFIER::Description nur Müll ausliefert.

Danke schonmal im vorraus
Neva

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

30.12.2004, 16:02

Zeig mal den abgeänderten Code.

3

30.12.2004, 17:02

Der auf Seite 113 abgedruckte Code, mit leicht abgeänderten Variablennamen funktioniert, aber wenn ich

C-/C++-Quelltext

1
2
if(FAILED(pD3D->GetAdapterIdentifier(iAdapter, 0, &Adapters[iAdapter])))
//Fehler-Messagebox...

weglasse, dann wird "pAdapters[iAdapter].Description" und ".Driver" eine Folge von kleinen Quadraten und "Y"s.
Wenn ich statt der if-Abfrage einfach die FAILED-Funktion ausführe geht es auch einwandfrei.

Das liegt wohl daran das in FAILED

C-/C++-Quelltext

1
pD3D->GetAdapterIdentifier(iAdapter, 0, &Adapters[iAdapter])

aufgerufen wird!
Ich finds aber seltsam, dass vorhin DatenMüll gekriegt hab. Momentan macht das Programm nämlich einfach garnichts wennn ich GetAdapterIdentifier nicht ausführe...

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

4

30.12.2004, 17:39

habe ich das richtig verstanden: wenn du GetAdapterIdentifier nicht aufrust, bekommst du datenmülll, wenn, dann klappts?

ist nicht weiter verwunderlich, da GetAdapterIdentifier die "adapter-informationen" in die D3DADAPTER_IDENTIFIER9 stuktur schreibt, auf welche der übergeben zeiger (parameter 3) zeigt. wenn du GetAdapterIdentifier nicht aufrufst, steht da das drin was durch zufall oder den konstruktor da drin steht und das ist in der regel nicht das was man will *g*.


http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c_summer_04/directx/graphics/reference/d3d/interfaces/idirect3d9/getadapteridentifier.asp

Werbeanzeige