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.06.2010, 16:31

Auf eine Hälfte des Bildschirms rendern

Hi Leute,

Ich bin jetzt im Buch an den Punkt angelangt, wo man das Spiel Galactica erweitern soll. Eine benutzerdefinierte Steuerung hab ich schon geschrieben, und jetzt will ich einen Multiplayer-Modus hinzufügen. Da ein Multiplayer über mehrere Bilddschirme(Netzwerk etc.) zu kompliziert ist, dachte ich mir, dass ich einen Multiplayer mit geteiltem Bildschirm schreibe. Doch da stellt sich mir das Problem: Wie render ich nur auf eine Hälfte eines Bildschirms? Denn ich will nicht nur die Hälfte rendern, sondern sozusagen "den gesamten Bildschirm skalieren". Das müsste ja eigentlich nach der Transformationspipeline passieren. Korrigiert mich falls nicht! Ich hab keine Ahnung...

Hoffentlich könnt ihr mir helfen,
Euer 3D-Anfänger

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

2

07.06.2010, 16:51

Ich habe mir das auch schon überlegt, ich bin mir zwar nicht sicher, ob das die gängige Methode ist, aber ich hätte es so gemacht:
2 Texturen erstellen und in jeweils eine das Spiel für den jeweiligen Spieler rendern und die Texturen dann jeweils über den halben Bildschirm legen.

3

07.06.2010, 16:53

Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

4

07.06.2010, 18:20

Wenn ich das richtig verstanden habe, muss ich zwei Viewports erstellen

C-/C++-Quelltext

1
2
D3DVIEWPORT9 rightViewPort;
D3DVIEWPORT9 leftViewPort

und diesen Koordinaten zuweisen.

C-/C++-Quelltext

1
2
3
4
5
6
leftViewPort.X      = 0;
leftViewPort.Y      = 0;
leftViewPort.Width  = g_dwBackBufferWidth / 2;
leftViewPort.Height = g_dwBackBufferHeight;
leftViewPort.MinZ   = 0.0f;
leftViewPort.MaxZ   = 1.0f;

Dann kann ich diese als aktiven Viewport einsetzen

C-/C++-Quelltext

1
g_pd3dDevice->SetViewport( &rightViewPort );

und einfach auf jeden einzeln rendern.
Kann ich das auch einfach so ins Spiel einbauen oder muss ich noch was wichtiges beachten, z.B. im Bezug auf die TriBase-Engine?

Aber erst Mal vielen Dank für eure Antworten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »3D-Anfaenger« (07.06.2010, 18:35)


BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

5

07.06.2010, 18:35

Ich habe das noch nie gemacht, aber an der TriBase-Engine solltest du eigentlich nichts mehr ändern müssen (höchstens du wilst sie mit Viewports erweitern).

Probiere es doch einfach mal aus.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

07.06.2010, 18:41

Du musst halt dran denken den Aspect in deinen Projektionsmatritzen entsprechend der Viewports zu wählen das das ganze sonst ziemlich verzerrt aussehen wird...

7

07.06.2010, 18:43

okay, ich mach mich mal ran...
Wahrscheinlich werd ich mich noch mal melden, aber hoffe es nicht!!

Danke

8

07.06.2010, 19:35

Ich habs jetzt erst mal probiert, dass ich auf beiden Viewports dasselbe anzeige.
Der Tipp mit dem Aspekt war gut, vorher war das irgendwie so ein Kuddelmuddel aber jetzt ist alles gut.
Aber eins wundert mich, denn meine Laserstrahlen, die ich schieße, kommen manchmal ganz oft hintereinander oder verschwinden gar nicht erst. Da kann irgendwas nicht stimmen, wahrscheinlich mit den Z-Koordinaten des Viewports, oder?

Euer 3D-Anfänger

PS: Es tritt auch bei anderen Werten in den Z-Koordinaten auf. Woran kann das liegen?
PPS: Das Problem tritt nicht auf, wenn ich nur einen Viewport rendere, ansonsten immer auf dem zweiten, den ich rendere. Ich weiß nicht warum, aber irgendwie kommt es nur, wenn ich ein Raumschiff bewege und dann schieße. Wie gesagt, es kommen sehr viele Laserstrahlen, die nicht verschwinden. Warum?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »3D-Anfaenger« (10.06.2010, 16:55)


Werbeanzeige