JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

C#! Surfaces ja oder nein?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
daybreaker
Mini JLI'ler



Anmeldedatum: 05.07.2004
Beiträge: 9

Medaillen: Keine

BeitragVerfasst am: 10.11.2004, 15:00    Titel: C#! Surfaces ja oder nein? Antworten mit Zitat

Hi, ich plane momentan ein neues Projekt. Das ganze soll eine Weltraumsimulation im 2D Raum werden. Ich frage mich nun ob ich mit Surfaces arbeiten soll oder nicht? Und wenn nicht welche alternativen habe ich in C# + DX9?

day
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



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

BeitragVerfasst am: 10.11.2004, 15:18    Titel: Antworten mit Zitat

Hi,

was spricht gegen Surfaces? Okay Surfaces haben in D3D9 keinen sehr guten Ruf, da sie sehr performance-fressend sind, aber für den Notfall tuts das schon.

Ansonsten gäbe es da noch OpenGL, Vertextransformierung, DirectDraw, GDI oder Java 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
daybreaker
Mini JLI'ler



Anmeldedatum: 05.07.2004
Beiträge: 9

Medaillen: Keine

BeitragVerfasst am: 10.11.2004, 15:27    Titel: Antworten mit Zitat

Hmm, nee bei DX will ich schon bleiben.. also fällt OpenGL, etc. schon mal raus.. aber Arbeitet DirectDraw nicht mit Surfaces? Ich mein D3D brauch ich für nen 2D Spiel nicht..

day
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



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

BeitragVerfasst am: 10.11.2004, 15:56    Titel: Antworten mit Zitat

Fragen wir mal so:
Seit wann braucht man D3D für 2D mit Alphablending, Rotation und co? DirectDraw reicht aus.
_________________
'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
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.11.2004, 15:59    Titel: Antworten mit Zitat

Ich würde da schon D3D9 nehmen. In DirectDraw7 hat man zumindest keine automatische Möglichkeit, Surfaces zu blenden. Da muss man das schon manuell(d.h. Pixel für Pixel durchführen). Und das ist nach meinen Erfahrungen sehr performancefressend. Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 10.11.2004, 16:14    Titel: Antworten mit Zitat

Microsoft empfiehlt aber selber für 2D Angelegenheiten eher Dx7 anstatt Dx9 zu verwenden. Obwohl das sicher mehr arbeit machen dürfte.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



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

BeitragVerfasst am: 10.11.2004, 16:23    Titel: Antworten mit Zitat

FallenAngel84
Wüsste nicht wo das steht, jedenfalls nicht in der MSDN oder Doku

The Lord of Programming
Naund? was meinste wie schnell du sowas machen kannst heut zu Tage Wink

Nebenbei: Es ist besser für das Ganze Programm nur 1 Surface zu benutzen, die Locken und alles reinstopfen.

Fazit: 1. Lock für jeden Frame, 1 Surface, Speedzuwachs von über 50% und nur eine Blt-Funktion wird aufgerufen.

So kann man auch sehr leicht Alphablending und rotation einfügen Wink

Wer Braucht schon Surfaces für eine einzige BMP Wink Ein 1D-Array reicht *ggg*
_________________
'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
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.11.2004, 16:28    Titel: Antworten mit Zitat

Patrick hat Folgendes geschrieben:
The Lord of Programming
Naund? was meinste wie schnell du sowas machen kannst heut zu Tage Wink

Naja...das hat mich eben nicht überzeugt. Ich habs selbst probiert. Ich hab sogar unterschiedliche Speicherorte für die Surfaces gewählt, damit die Kommunikation besser läuft. Aber nach ein paar Blendings war die Framerate im Keller. Ich will ja auch net, dass man das nur auf den neuesten PCs flüssig spielen kann.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



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

BeitragVerfasst am: 10.11.2004, 16:35    Titel: Antworten mit Zitat

The Lord of Programming
Ich möcht ja auch nicht, dass man das Spiel nur auf HighEnd PCs zocken kann Wink

Aber da liegt Dein Fehler: Du hast mehrere Surfaces benutzt, Du darfst aber nur eine, max. 2.

Deine Bitmaps speicherst Du dann in einem 1D Array und davon auch nur die Farbdaten! Die Farbdaten kopierst Du dann in das gelockte Surface usw. usw.usw. und am Ende tust Du die Surface entriegeln und mit einem Blt Aufruf freigeben. Smile

Das Locken und die Blt-Funktion (welche intern auch Lock und Unlock aufruft) kosten am meisten Zeit, die berechnung für Alphablending sogut wie gar nichts wenn man keine Divisionen einbaut oder die Optimiert, dafür braucht man noch nicht einmal Assembler oder sonstige SIMD-Technologien.

- Patrick

Edit: StarCraft benutzt ebenfalls die selbe Technik.
_________________
'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
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.11.2004, 16:42    Titel: Antworten mit Zitat

Ja gut, wenn man alle Grafiken in ein Array legt, dann könnte es besser funktionieren. Allerdings sollte man da schon mit OOP vertraut sein und sich eine Klasse zusammenschreiben. Sonst ist es zu fehleranfällig.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



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

BeitragVerfasst am: 10.11.2004, 16:43    Titel: Antworten mit Zitat

OOP noch nicht mal, ich hab das vor 4 Jahren mal mit DirectDraw1 (beste Version von allen) mal realisiert.
_________________
'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
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.11.2004, 16:54    Titel: Antworten mit Zitat

Patrick hat Folgendes geschrieben:
OOP noch nicht mal, ich hab das vor 4 Jahren mal mit DirectDraw1 (beste Version von allen) mal realisiert.

Klar - man braucht kein OOP, aber es hilft enorm, wenn man nur noch eine Funktion zum blitten aufrufen muss als wenn man das "manuell" macht.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



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

BeitragVerfasst am: 10.11.2004, 16:56    Titel: Antworten mit Zitat

ich hatte es so realisiert:
Code:

__forceinline HRESULT blit (unsigned short *pixeldata)
{
    // blablabla
}


Ach ja wie ich die alten VESA-Zeiten und DirectDraw1 Zeiten vermisse Very Happy
_________________
'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
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 11.11.2004, 14:46    Titel: Antworten mit Zitat

@Patrick:
und wie machst du das dann wenn du einen Colorkey verwenden willst??
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



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

BeitragVerfasst am: 11.11.2004, 14:48    Titel: Antworten mit Zitat

Vision
So wie es DirectDraw und andere APIs auch machen: Den Pixel überspringen und ihn nicht auf das Zielarray kopieren Wink
_________________
'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 -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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