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

ProAmateur

Alter Hase

  • »ProAmateur« ist der Autor dieses Themas

Beiträge: 434

Wohnort: Bei Simmern, Koblenz

Beruf: Schüler

  • Private Nachricht senden

1

13.12.2011, 17:27

Generelle Fragen zu Wiki-Artikel: "Grafische Übergänge zwischen Spielzuständen"

Hi alle

Also ich hab mein Billard Spiel jetzt so weit fertig und würde es jetzt ein bisschen schöner gestalten.
Da bin ich auf diesen Artikel gestoßen (siehe Themaname):
https://www.spieleprogrammierer.de/wiki/…_Spielzuständen

Das Prinzip hab ich verstanden, hab auch das relativ kleine Kapitel "In Texturen rendern" im Buch gelesen;
habe aber immer noch keine richtige Ahnung wie ich das umsetzen kann.
Also in der Theorie:

Wenn das Spiel gestartet wird (über die Move-Funktion in der Hauptmenüstruktur), wird das derzeitige Bild in einer Textur gepeichert.
Dann wird das neue bild im Spiel drinn auch in einer Textur gepeichert, und zwichen diesen Bildern dann interpoliert.
So...

Nur wie setze ich das im Code um?
Ich brauche doch eigentlich nur 4 Texturen die ich über CreateTexture erzeuge;
Eine für das alte Bild, eine für das neue;
eine für den alten ZBuffer und eine für den neuen;

So kann mir da jemand vll nen Anstoß geben, wie ich das umsetze?
Danke!

ProAmateur
"Die Neugier steht immer an erster Stelle eines Problems, das gelöst werden will."
Galileo Galilei
________________________________________________________________________

"Dumme Fragen gibt es nicht, dumm ist nur, wer nicht fragt.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

13.12.2011, 21:43

Du brauchst nicht mehrere Z-Buffer, sondern nur einen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

14.12.2011, 09:12

Nur, wenn die RenderTargets so groß sind wie der Backbuffer, ansonsten brauchst du schon einen weiteren ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

14.12.2011, 09:23

Wieso sollte man dazu einen zweiten Backbuffer brauchen? Man rendert, hat das Ergebnis in einer Textur und rendert neu unter Verwendung des alten Z-Buffers. Ich sehe nicht, wieso man da zwei bräuchte. Ich brauche bei mir jedenfalls keine zwei und ich verwende viele gerenderte Texturen. Oder ist das eine "Spezialität" von DirectX?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

14.12.2011, 10:02

Wenn das Spiel gestartet wird (über die Move-Funktion in der Hauptmenüstruktur), wird das derzeitige Bild in einer Textur gepeichert.
Dann wird das neue bild im Spiel drinn auch in einer Textur gepeichert, und zwichen diesen Bildern dann interpoliert.
So...

Nur wie setze ich das im Code um?
Ich brauche doch eigentlich nur 4 Texturen die ich über CreateTexture erzeuge;
Eine für das alte Bild, eine für das neue;
eine für den alten ZBuffer und eine für den neuen;


Wie du das am besten Umsetzt ist auch abhängig wie dein Renderpfad aufgebaut ist.
@D13_Dreinig

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

14.12.2011, 10:25

Wieso sollte man dazu einen zweiten Backbuffer brauchen? Man rendert, hat das Ergebnis in einer Textur und rendert neu unter Verwendung des alten Z-Buffers. Ich sehe nicht, wieso man da zwei bräuchte. Ich brauche bei mir jedenfalls keine zwei und ich verwende viele gerenderte Texturen. Oder ist das eine "Spezialität" von DirectX?
Meines Wisssenstands brauchst du für ein RenderTarget, dass eine andere Größe als den Backbuffer hat, einen eigenen Z-Buffer :) ansonsten klar kann man den vom Backbuffer nehmen. Ob das für D3D10/11 auch noch so ist keine Ahnung. Bei OpenGL nicht?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

14.12.2011, 13:59

Also unter OpenGL hab ich einfach mit glCopyTexImage2D den Back-Buffer in eine Textur kopiert ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

14.12.2011, 14:47

So mach ich das eben auch XD
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

9

14.12.2011, 16:40

Ja gut das geht mit DynamicTextures und Surfaces in Direct3D auch. Hatte das mal benutzt, war aber nicht so performancemäßig "erquickend" - oder ich habe mich zu doof in der benutzung angestellt.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

14.12.2011, 17:29

Ich hab' damit keine Probleme, die sich auf die FPS niederschlagen. Aber kommt wohl auf die Verwendung an.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige