JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Splitscreen
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
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 01.06.2004, 16:21    Titel: Splitscreen Antworten mit Zitat

Kann ich in DX9 ein Rechteck am Bildschirm festlegen, in das gerendert werden soll? Zum Beispiel um einen Splitscreenmodus, oder einen Rückspielge zu machen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 01.06.2004, 16:31    Titel: Antworten mit Zitat

SetViewport() - wenn es mehr als ein Rechteck sein soll, dann Stencil Buffer

Zuletzt bearbeitet von Christian Rousselle am 01.06.2004, 16:34, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 01.06.2004, 16:32    Titel: Antworten mit Zitat

Müsste entweder durch Locken des betroffenen Bereiches gehen (weiss jezz nicht genau wie das heisst) oder du renderst in eine Textur.
_________________
"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
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 02.06.2004, 14:09    Titel: Antworten mit Zitat

Danke, das mit dem Viewport ist genau das, was ich suchte!
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 24.08.2007, 17:32    Titel: Antworten mit Zitat

Mal ne Zusatzfrage :
Führt das eigentlich zu einem spürbaren Performanceverlust, wenn man SetViewPort in jedem Frame oft verwendet ?
Oder sind grundsätzlich alle (bzw. die meisten) SetXxxx-Methoden von IDirect3DDevice sehr schnell ?

Das würde mich nämlich schon einmal interesieren. Nicht dass ich bei jedem render 50mal das Device verändere und meine Grak damit zum Wahnsinn treibe.

Oder hift das sogar die Graka zu entlasten, wenn man ihr sagt sie soll sich nur auf die Bereiche konzentrieren, wo es auch was zu drawen gibt ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 24.08.2007, 21:17    Titel: Antworten mit Zitat

Sowas belastet eher die CPU, wie es unter Vista abläuft weiss ich nicht genau da ist die Architektur etwas anders, kann auch DX10 gewesen sein.

Wenn du allerdings 50 Teilbereiche brauchst wirst du nur schwer um die 50 Aufrufe hinweg kommen.

Allgemein kann man sagen das jeder SetXXX Aufruf an der performance nagt, je weniger desto besser, aber das hast du sicher selbst schon gewusst. Wenn dich aber wirklich interessieren sollte wie schnell denn ein SetViewport aufruf ist solltest du dir den DX SDK Docu Artikel "Accurately Profiling Direct3D API Calls (Direct3D 9)" einverleiben.

Zitat:

Oder hift das sogar die Graka zu entlasten, wenn man ihr sagt sie soll sich nur auf die Bereiche konzentrieren, wo es auch was zu drawen gibt ?


Ja.
_________________
"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
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 10:43    Titel: Antworten mit Zitat

Ok, ich hab mal das mit dem SetViePort mal ausprobiert. Allerdings ist es bei Sprites, die bei denen die Drawmethode mehrmals aufgerufen wird, eher unvorteilhaft. Weil das Sprite wird ja nicht beim Aufruf von lpSprite->Draw(...);
gerendert, sondern beim lpSprite->End(); Was das alles sehr kompliziert macht. Anstatt folgendes schreiben zu können
CPP:
lpSprite->Begin(...);

lpD3Device->SetViewport(...);
lpSprite->Draw(...);

lpD3Device->SetViewport(...);
lpSprite->Draw(...);

...

lpSprite->End();


Muss mans jetzt so schreiben :
CPP:
lpD3Device->SetViewport(...);
lpSprite->Begin(...);
lpSprite->Draw(...);
lpSprite->End();

lpD3Device->SetViewport(...);
lpSprite->Begin(...);
lpSprite->Draw(...);
lpSprite->End();

...

Die vielen End()- und Beginn()-Methoden sind besimmt nicht sehr performanceförderlich, oder ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 10:57    Titel: Antworten mit Zitat

Wenn du es so sortierst das erst alles für den ersten und dann für den zweiten Viewport gezeichnet wird dürfte es nur eine Verdopplung der Aufrufe sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 11:18    Titel: Antworten mit Zitat

Jo, dann schon.
Was ist aber wenn ich 20 Viewports verwende ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 16:45    Titel: Antworten mit Zitat

Otscho hat Folgendes geschrieben:
Jo, dann schon.
Was ist aber wenn ich 20 Viewports verwende ?

Wofür brauchst du 20 viewports? könntest du das dann nicht vielleicht anders regeln? Beschreibe mal den Einsatz.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 16:46    Titel: Antworten mit Zitat

Ich weiß das es nur eine theoretische Frage war aber warum sollte man den Bildschirm in 20 teile zeichnen?
Im Prinziep ist es so als hätte man 20 Programme offen die zeichnen wollen nur das sich diese die GrakaObjekte ( Sufaces etc. ) teilen können.

Ich hab es zwar nie mit so vielen probiert aber ich denke das die vielen Draw anweisungen wesentlich mehr als Begin und End ins Gewicht fallen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 18:00    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
Wofür brauchst du 20 viewports? könntest du das dann nicht vielleicht anders regeln? Beschreibe mal den Einsatz.
Gruß DXer

Wenn ich bei meiner GUI ein Element hab, das mehr Platz brüchte als ihm zur Verfügung steht, soll sich eine Scroll-Funktion einschalten, mit der man dann immer den aktuellen Auschnitt auswählen kann. So wie zum Beispiel ein seitenlanger text im Editor. Oder im Browser: div-Elemente, deren Inhalte größer sind als das div selber. Das sind ja dann quasi auch Splittscreens. Manchmal sogar Splittscreens im Splittscreen. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 18:17    Titel: Antworten mit Zitat

naja aber sowas realisiert man eigtl. nicht mit Viewports. Entweder nimmst du gleich die winAPI (bzw. eine andere dafür vorgesehene API) oder du nimmst eine orthogonale Perspektive und ordnest das dann alles richtig an, das wär mit DX die schnellste Mögl.

EDIT: du kannst auch screen (rhw-)vertices nehmen, da kannst du direkt die vertices in screenkoordinaten angeben

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 26.08.2007, 18:21    Titel: Antworten mit Zitat

Ich schätze das dabei Clipping eine wichtige Rolle spielt. Daher wird man nur mit orthogonalen Matrizen das nicht alles erreichen können. Wenn man z.B. einen Text halb darstellt (untere Hälfte einer Zeile abgeschnitten) sollte es 10 mal leichter sein, DX irgendwie klar zu machen, das zu clippen, weil das kann DX ja ohne weiteres, als sich selber darum zu kümmern.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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: 27.08.2007, 18:16    Titel: Antworten mit Zitat

Um die Performance hoch zu halten:

Update nur die Bereiche die sich auch verändert haben, UI Elemente werden sich ja nicht oft im Vergleich zur Spielfläche verändern. Und in eine Textur gerendert kannst du auch Blending etc verwenden.

Clipping: Sollte man natürlich schon beachten wenn du aber angst vor Overdraweffekten hast -> SetScissorRect(...)
_________________
"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
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