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

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

1

26.07.2006, 20:33

Backbuffer Format != VideoMode.Format

Ich bin gerade dabei den tbConfigDialog der Tribase-Engine zu ersetzen. Nicht dass ich damit nicht zufrieden bin, er ist mir nur irgendwie zu.. deutsch :)
Dabei sind mir aber mal wieder Details aufgefallen die ich noch nicht verstanden hab: (hier ist ein Screenshot fuer diejenigen die den Dialog nicht kennen)
Warum kann man im Dialog einmal den Videomodus auswaehlen, mit Aufloesung, Format und Refresh-rate und direkt einen Eintrag weiter das Backbufferformat ?
In den Bildpuffer wird ja die Szene gerendert, und wenn ich Present() aufrufe wird dieser sichtbar gemacht, bzw mit einem weiteren Backbuffer getauscht. Wozu also soll das Bildformat ein anderes sein als das des Backbuffers? Wozu sollte man zb auf einen 32-Bit Buffer rendern wenn dann nur 16Bit Farbtiefe sichtbar sein werden? Oder versteh ich da was falsch :?
Und noch was: Wozu braucht ein Bildpuffer einen Alpha-Kanal ?
"Have you tried turning it off and on again?"

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

2

26.07.2006, 21:03

Damit man z.B. auch Bilder mit Alpha-Informationen darstellen kann

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

3

26.07.2006, 21:14

Aber auf dem Bildpuffer selbst sollten doch bitteschoen keine Alphawerte vorliegen. Angenommen ich habe halbtransparentes Rot (255,0,0,127) dass ich auf den schwarzen Bildpuffer zeichne: Mit normalen Blendfaktoren/Verfahren soll einfach ein Farbwert von (127,0,0) auf meinem Bildpuffer landen.
Und wenn der Bildpuffer jetzt einen Alpha-wert hat, mit was soll den geblendet werden? DirectX kann mich schlecht ins innere des Monitors schauen lassen :D
"Have you tried turning it off and on again?"

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

26.07.2006, 21:32

Der Alpha-Wert wird nicht dargestellt. Ein roter Pixel mit Alpha = 255 sieht genauso aus wie einer mit Alpha = 0. Aber einen Alphakanal im Framebuffer zu haben, ist manchmal sehr vorteilhaft für gewisse Dinge. Z.B. wenn du D3DBLEND_DESTALPHA oder D3DBLEND_INVDESTALPHA verwenden willst.

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

5

26.07.2006, 21:43

Mir ist gerade aufgefallen, dass der Parameter VideoMode.Format auch verworfen wird.. in der D3DPRESENT_PARAMETERS Struktur ist nur Platz fuer ein Format. Ich nehme an das Format des VideoModes war ledeiglich erforderlich um die moeglichen Backbufferformate zu ermitteln, da diese ganz offensichtlich zusammen haengen.

C-/C++-Quelltext

1
2
3
4
// Tribase Code (tbDirect3D.cpp)

PresentParams.BackBufferWidth   = pConfig->Direct3D.VideoMode.Width;
PresentParams.BackBufferHeight  = Config->Direct3D.VideoMode.Height;
PresentParams.BackBufferFormat  = pConfig->Direct3D.BackBufferFormat;
"Have you tried turning it off and on again?"

Werbeanzeige