JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3b193d9b27c86730422712ccf8a512dfMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[DirectX]LPDirectDrawSurface und LPDirect3DSurface

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> FAQ
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Florian
Super JLI'ler


Alter: 32
Anmeldedatum: 20.06.2003
Beiträge: 302

Medaillen: Keine

BeitragVerfasst am: 15.02.2005, 19:11    Titel: [DirectX]LPDirectDrawSurface und LPDirect3DSurface Antworten mit Zitat

LPDirectDrawSurface und LPDirect3DSurface was ist der unterschied zwischen den beiden. Sind nicht alle beide ein Speicherbereich auf der GRAKA.

THX
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 15.02.2005, 20:22    Titel: Antworten mit Zitat

Hi,

nein das ist nicht das selbe! Das sind 2 Unterschiedliche APIs und Schnittstellen!

Das 1. ist ein Surfaceobjekt der API DirectDraw die ausschließlich für 2D gemacht wurde! Viele GraKas unterstützen kein 2D mehr deshalb emuliert der Treiber diese Surfaceobjekte als Textur mit 4 Vertices und rendert diese, andere die noch vollen 2D Support haben benutzen natürlich die normale Variante und blitten die Daten direkt auf den Frontbuffer. Interessanter weise konnte man bei DirectDraw den Speicherort angeben, doch dort musste man erst überlegen ob das Sinn machte!

Mit DDSCAPS_VIDEOMEMORY hatte man den Vorteil, das die Surface direkt in dem GraKa RAM (VRAM) geladen wurde und dort bis zur freigabe verblieb, dadurch wurd der Datentransfair über den lamen BUS extrem minimiert und man bekam mehr FPS raus! Doch der VRAM ist immer noch sehr begrenzt (32 MByte bis 64 MByte sind oft erst Standard!) und denn kann man allein mit 4 großen (1024x1024) Bitmaps so dermaßen zubomben das kein Platz mehr da ist für wichtige Sprites wie z.B. Spieleranimationen.

Vorteil: Schnelles Blitten durch weniger BUS-Transfer, da die Daten im kostbaren VRAM sind.

Nachteil: Lamarschige Datenverarbeitung (Unlock/Lock) und VRAM kann sehr schnell zugemüllt werden.

Mit DDSCAPS_SYSTEMMEMORY konnte man die Daten im "normalen" RAM auf dem Mainboard stopfen wo natürlich die Bearbeitung der Daten (Unlock/Lock) sehr viel schneller von statten ging! Nur kam hier zum Blitten der Transfer über den BUS hinzu was die FPS etwas runterziehen konnte (je nach Datenmenge!)

Vorteil: Schnelles Bearbeiten der Daten und mehr als 256 MByte Platz für Grafiken

Nachteil: Je nach Datenmenge überlastung des BUS was FPS runterziehen kann.

Fazit: Erst überlegen und den VRAM nicht mit Hintergrundbildern zumüllen! Sondern ihn an Kostbarere Sprites benutzen wie z.B. Animationen des Spielers.


Das 2. ist ein Surfaceobjekt der Direct3D API die ausschließlich für 3D da ist! Nachdem DirectDraw, Direct3D IM und Direct3D RM zu DirectX Graphics (Heute einfach nur Direct3D genannt) zusammen geproscht wurden, hat man sich entschlossen diese Surfaceobjekte weiter zu behalten (Direct3D RM und Direct3D IM hatten vorher _keine_ Surfaceobjekte!), doch sie sind extrem lam da sie über GDI oder was weiß ich was laufen.

Lustigerweise hat Microsoft sowie ATI und nVidia vergessen diese Objekte weiter auszubauen da sie als "Unnütz" gelten, da man besser damit beholfen ist 2D mit 3D zu emulieren über 4 vertices + Textur. Auch wurde wie bei den Texturen hier geschlampt und Direct3D bzw. eher der Treiber stopft die Texturdaten in den RAM oder VRAM je nach dem wie ihm beliebt, manuelles setzen per Flag wie bei DirectDraw ist ausgeschlossen! LEIDER

Vorteil: Gute Frage? Keine

Nachteil: Lamarschige Surface (locker das 7fache als eine normale DirectDraw Surface der Version 1, welche schon lam war)

Fazit: Weg damit!



Wie Du siehst sind beides Unterschiedliche Sachen Wink

- Patrick
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> FAQ Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum