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

07.08.2008, 12:38

ControlFlags beim erzeugen des Device "ungünstig"?

Hallo,

ich arbeite zur Zeit auf meinem Arbeitslaptop der keine besonders gute Grafikkarte besitzt. Dabei ist mir aufgefallen das es zu einem "D3DERR_INVALIDCALL" Fehler kommt,(bei dem aufruf von IDirect3D9::CreateDevice) verursacht dadurch das die Flags falsch sind.
Zur errinerung diese werden wie folgt bestimmt/gesetzt:

Quellcode

1
2
3
4
5
6
config->Direct3D.dwFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING;
config->Direct3D.dwFlags |= D3DCREATE_MULTITHREADED;
if(!(Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT))
{
    config->Direct3D.dwFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}

Da ich das Buch nicht zur Hand hab weiß ich nicht warum "D3DCREATE_HARDWARE_VERTEXPROCESSING" immer gesetzt wird.(?) Dies verursacht nämlich bei mir das Problem. Also hab ich das ganze wiefolgt verändert:

Quellcode

1
2
3
4
5
6
7
8
if((Caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT))
{
    config->Direct3D.dwFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING;
}
else
{
    config->Direct3D.dwFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}

Zugegeben ich bin kein DirectX experte, deshlb würde ich gern wissen warum es anders im Buch gemacht wird und den hintergrund. Oder ist es sehr wichtig das die hardware das Vertexprocessing übernimmt?(mal abgesehen von geschwindigkeitsvorteilen)

Anonymous

unregistriert

2

07.08.2008, 12:44

Vertrauen ist gut, Kontrolle ist besser.

In Büchern wird alles immer nur abgespeckt, damit man dem Leser zeigen kann "Wie schnell man ja hier was mit erstellen kann usw.". Aber ob es dann auch Effektiv ist, steht auf einem anderen Blatt.

Daher immer daran halten: Vertrauen ist gut, Kontrolle ist besser.

Ein if schadet nie ;)

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

07.08.2008, 14:37

Retsiemsuah
In der Doku zu D3DCREATE_HARDWARE_VERTEXPROCESSING und D3DCREATE_SOFTWARE_VERTEXPROCESSING müsste euch stehen, dass beide Flags zusammen nen Fehler verursachen. Sie widersprechen sich zwar nur strenggenommenerweise, aber für den Mischfall gibt es entsprechendes Flag D3DCREATE_MIXED_VERTEXPROCESSING (meine ich mich zu erinnern).
Kommen Sie nie mit einem Schwert zu einer Schießerei.

4

10.08.2008, 10:53

Zitat von »"Steven77"«

Retsiemsuah
In der Doku zu D3DCREATE_HARDWARE_VERTEXPROCESSING und D3DCREATE_SOFTWARE_VERTEXPROCESSING müsste euch stehen, dass beide Flags zusammen nen Fehler verursachen. Sie widersprechen sich zwar nur strenggenommenerweise, aber für den Mischfall gibt es entsprechendes Flag D3DCREATE_MIXED_VERTEXPROCESSING (meine ich mich zu erinnern).

ja stimmt, ganz unten versteckt stehts, hätten sie es direckt neben die definition geschrieben hät ich es auch gesehen ^^

Werbeanzeige