Hallo
Kann mir mal jemand erklären wie das mit dem DXGI_FORMAT funktioniert? Was sind welche DisplayMody (65k Farben, TrueColor, ...)? Und für Was brauch man die ganzen Unterschiede zwischen _UNORM oder _FLOAT?
Blicke da noch immer nicht wirklich durch und habe auch leider nirgends (weder deutsch noch englische) eine Beschreibung gefunden.
Dank Euch
Karl
[DX10] DXGI_FORMAT Format?
- Krishty
- Establishment
- Beiträge: 8316
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX10] DXGI_FORMAT Format?
Hi,
Schau hier mal ganz unten unter „Format Modifiers“ ;) Im Grunde geben die nur an, wie die Bits des Formats von der Hardware interpretiert werden.
Da Bildschirme nur positive Werte zwischen 0 (schwarz) und 1 (weiß) interpretieren können, muss der Backbuffer immer _UNORM sein.
Bei _SNORM sorgt die Hardware dafür, dass die Werte beim Laden in den Bereich -1 … +1 gebracht werden. Dadurch kann man Normalmaps samplen und hat direkt die richtigen Werte, ohne das klassische „* 2.0f - 1.0f“ durchführen zu müssen.
_FLOAT interpretiert die Bitmuster als Gleitkommazahlen, so kann man HDR-Bilder, Positionmaps etc mit Gleitkommapräzision samplen. Ist auch für Vertices wichtig, schließlich liegen deren Positionen meist nicht im Intervall [0,1] (_UNORM) vor, sondern eben als reelle Zahlen.
_UINT / _SINT sind wichtig, wenn man die Bitmuster direkt als Integer interpretieren muss, so z.B. die Indizes in einem Index-Buffer.
Gruß, Ky
Schau hier mal ganz unten unter „Format Modifiers“ ;) Im Grunde geben die nur an, wie die Bits des Formats von der Hardware interpretiert werden.
Da Bildschirme nur positive Werte zwischen 0 (schwarz) und 1 (weiß) interpretieren können, muss der Backbuffer immer _UNORM sein.
Bei _SNORM sorgt die Hardware dafür, dass die Werte beim Laden in den Bereich -1 … +1 gebracht werden. Dadurch kann man Normalmaps samplen und hat direkt die richtigen Werte, ohne das klassische „* 2.0f - 1.0f“ durchführen zu müssen.
_FLOAT interpretiert die Bitmuster als Gleitkommazahlen, so kann man HDR-Bilder, Positionmaps etc mit Gleitkommapräzision samplen. Ist auch für Vertices wichtig, schließlich liegen deren Positionen meist nicht im Intervall [0,1] (_UNORM) vor, sondern eben als reelle Zahlen.
_UINT / _SINT sind wichtig, wenn man die Bitmuster direkt als Integer interpretieren muss, so z.B. die Indizes in einem Index-Buffer.
Gruß, Ky
Re: [DX10] DXGI_FORMAT Format?
Erst mal danke für deine Antwort aber was mir noch immer unklar ist, wie definiere ich einen 256 Farben Farb-Modus, bzw. 65k Farben Farb-Modus, bzw TrueColor Farb-Modus.
Danke
Karl
Danke
Karl
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: [DX10] DXGI_FORMAT Format?
16/256 Farben ist ein Palettenmodus und eigentlich nicht mehr im Gebrauch. 65k ist ein Format mit 16 bits pro Pixel, also 2^16 = 65536 Kombinationen. Üblicherweise RGB565, d.h. 5 Bits für Rot und Blau, 6 Bits für Grün weil das menschliche Auge da empfindlicher ist. TrueColor sind 24 Bits pro Pixel, d.h. 16.7 mio Farben. Aus Alignmentgründen kommt aber immer noch ein viertes Byte hinzu dass dann im Falle des Bildschirmbuffers ungenutzt bleibt, in Rendertargets aber für die Transparenz genutzt werden kann. Typisches Format ist RGBA8888.
Re: [DX10] DXGI_FORMAT Format?
Dank dir für dein wunderbare Erklärung.
Karl
Karl