Seite 1 von 1

DirectX 7 und DirectX 9

Verfasst: 30.08.2011 15:14
von ZeHa
Servus,

mal ganz grob ins blaue gefragt: Muß man bei der Verwendung der neuen PB-Version irgendetwas beachten, bezogen auf DirectX 7/9?

Ich habe gerade versucht ein altes Projekt von mir mit der neuesten PB-Version zu kompilieren. Allerdings läuft diese Version nicht richtig, es werden fast keine Grafiken angezeigt (im Moment nur die 2D-Drawing-Sachen, aber keine Sprites). Erst wenn ich als Subsystem DirectX 7 angebe, funktioniert es wie gehabt.

Mit einem anderen Projekt habe ich es daraufhin auch probiert, da lief das ganze schon besser.

Ich weiß daß meine Ausführungen etwas dürftig sind, und Code kann ich auch keinen posten (der ist grottenschlecht, extrem umfangreich und ich verstehe ihn selbst nicht mehr richtig) - daher frage ich einfach nur, ob jemandem vielleicht ganz spontan irgendwas einfällt? Ansonsten muß ich halt Stück für Stück den Code isolieren und schauen, wo das Problem liegt...

Re: DirectX 7 und DirectX 9

Verfasst: 30.08.2011 15:59
von STARGÅTE
In der Tat gibt es eine menge Unterschiede zwischen DX7 und DX9 bezogen auf die PB-Befehle und Versionen.

Zum einen geht UseBuffer() nur unter DX7.
Zum anderen unterscheiden sich die Auswirkungen von Sprite3DBlendingMode() unter DX7 und DX9
Unter DX9 sind die Drawing-Befehle "irgendwie" langsammer (zumindest meine Erfahrung)
Unter DX7 Subsystem geht SpriteOutput() nicht mehr.

Fazit:
In den neuen Versionen würde ich auf SubSystem DX7 verzichten, dort gibt es inzwischen zu viele Bugs.
Dort würde ich nur noch DX9 benutzten.
Alte Projekte solltest du auch mal alten PB-Versionen kompilieren, wo DX7 noch Default war.

So meine Erfahrungen.

Re: DirectX 7 und DirectX 9

Verfasst: 30.08.2011 16:43
von ZeHa
Ahh okay, dann kann ich mir schon ungefähr vorstellen woran es liegen könnte...

Naja der Vorteil bei DX9 wäre, daß es auch mit meiner Laptop-Grafikkarte auf Win XP läuft... die DX7-Version kackt dort immer ab (mit Bluescreen!), läuft also nur unter Win7. Die DX9-Version lief jedoch auch unter XP (nur halt mit entsprechenden Fehlern)

Re: DirectX 7 und DirectX 9

Verfasst: 31.08.2011 12:18
von ZeHa
Okay ich hab mir das jetzt nochmal angeschaut. Liegt tatsächlich an der Verwendung von UseBuffer (was im anderen Projekt nicht vorkam, obwohl ich eigentlich dachte, das wäre dort auch vorhanden).

Gibt es denn einen Ersatz, den man verwenden kann? Ich möchte halt in eine Textur schreiben können, um diese dann per Sprite3D anzuzeigen. Aber DirectX9 würde ich schon ganz gerne verwenden...
PB Hilfe hat geschrieben:Es sind zwei alternative Subsysteme auf Windows verfügbar: 'OpenGL' und 'DirectX7', welche nützlich für bessere Kompatibilität mit älteren Windows-Versionen sein können. Hinweis: DirectX7 wird auf der 64 Bit Edition von Windows nicht unterstützt.
Das hab ich grad in der Hilfe gefunden... bei mir lief die DX7-Version aber unter Win7 64bit... gilt obiges nur für Vista? Oder wie muß man das deuten...

Re: DirectX 7 und DirectX 9

Verfasst: 01.09.2011 10:29
von GPI
Ich denke mal, es ist der 64-Bit-Compiler gemeint, nicht Windows in 64 Bit. Ich kann zumindest hier definitiv alte 32Bit-Programme, die D7 nutzen starten.

Re: DirectX 7 und DirectX 9

Verfasst: 01.09.2011 15:23
von Kevin
ZeHa hat geschrieben:Okay ich hab mir das jetzt nochmal angeschaut. Liegt tatsächlich an der Verwendung von UseBuffer (was im anderen Projekt nicht vorkam, obwohl ich eigentlich dachte, das wäre dort auch vorhanden).

Gibt es denn einen Ersatz, den man verwenden kann? Ich möchte halt in eine Textur schreiben können, um diese dann per Sprite3D anzuzeigen. Aber DirectX9 würde ich schon ganz gerne verwenden...
wenn die Textur nicht größer als der Screen ist kannst du GrabSprite() verwenden.

Re: DirectX 7 und DirectX 9

Verfasst: 01.09.2011 19:04
von Danilo
Kevin hat geschrieben:wenn die Textur nicht größer als der Screen ist kannst du GrabSprite() verwenden.
Und zeichnen mit SpriteOutput(). UseBuffer war doch zum kompletten rendern
in einen anderen Buffer da, aber nur zum zeichnen sollte doch SpriteOutput
reichen.

Re: DirectX 7 und DirectX 9

Verfasst: 01.09.2011 19:15
von DarkDragon
Danilo hat geschrieben:
Kevin hat geschrieben:wenn die Textur nicht größer als der Screen ist kannst du GrabSprite() verwenden.
Und zeichnen mit SpriteOutput(). UseBuffer war doch zum kompletten rendern
in einen anderen Buffer da, aber nur zum zeichnen sollte doch SpriteOutput
reichen.
Ich weiß nicht ob du damals schon wieder da warst: ZeHa hat mal ein paar Experimente mit dem automatischen Vergrößern von Bildschirmdarstellungen gemacht, damit es immer noch pixelig aussieht und nicht weichgezeichnet wird. Er hat damals die Szene glaube ich direkt in ein Sprite3D gerendert und dieses dann auf die Bildschirmgröße gebracht (mit Beachtung vom Seitenverhältnis). Deshalb geht es ihm wohl um UseBuffer und nicht um SpriteOutput.