[DirectX] Unterschied zwischen XRGB und ARGB



  • Ich habe eine Frage zu den Farbformaten in DirextX. Überall muss man sich zwischen XRGB und ARGB entscheiden, aber wo liegt der Unterschied? Werden bei XRGB die Alpha-Bits einfach "verschwendet" und ignoriert, oder sind die beide gleich?



  • DirektIx schrieb:

    Ich habe eine Frage zu den Farbformaten in DirextX. Überall muss man sich zwischen XRGB und ARGB entscheiden, aber wo liegt der Unterschied? Werden bei XRGB die Alpha-Bits einfach "verschwendet" und ignoriert, oder sind die beide gleich?

    Muss man doch garnicht. Es gibt tonnenweise andere Formate. ARGB besitzt halt einen Alphakanal und XRGB nicht.



  • @this->that: was für eine sinnlose Antwort.

    @DirektIx: ja, bei 32 Bit XRGB werden die 8 Bit die bei ARGB für den Alpha-Kanal verwendet werden einfach nicht genutzt.



  • hustbaer schrieb:

    @this->that: was für eine sinnlose Antwort.

    Und was genau war daran bitte sinnlos?



  • DirektIx schrieb:

    Werden bei XRGB die Alpha-Bits einfach "verschwendet" ?

    Hintergrund ist der, dass das Speicherinterface entweder 8, 16, 32 (usw) Bit parallel uebertragen kann, bei RGB aber 24 Bit gefordert waeren.
    Somit ist es erheblich performanter, die 3 Farbkomponenten als 32Bit-Wort abzulegen.
    Den damit verbundenen zusaetzlichen Speicherbedarf nimmt man einfach in Kauf.
    Da die "ueberfluessigen" 8Bit dann ggf nicht sinnvoll gefuellt sind ignoriert "XRGB" deren Inhalt.



  • Danke für die Antworten. Aber wieso kann ich die Apha Bits nur für den Backbuffer als Format verwenden und nicht für den Display?

    @this->that:
    Ok, es gibt andere Formate, aber die beiden genannten sind wohl die geläufigsten.



  • @DirektIx:
    Weil aktuelle Grafikkarten keine Alpha-Werte ausgeben.

    Ein Display-Pixelformat mit Alpha-Kanal wäre daher sinnlos, die Alpha-Werte würden bei der Ausgabe im Nirvana verschwinden.

    Gäbe es Grafikkarten die den Alpha-Kanal mit ausgeben können (z.B. für Compositing), dann wären auch sicher Pixelformate mit Alpha als Display-Pixelformat erlaubt.

    Beim Back-Buffer macht es dagegen Sinn, denn auf den Back-Buffer kann man drauf rendern. Und dabei kann man den Destination-Aplha (also den des Back-Buffer) zum Blending verwenden. z.B. wenn man von vorne nach hinten rendert, statt von hinten nach vorne.



  • Danke für die Erläuterung. Ich habe noch eine Frage die aber nicht zu diesem Thema gehört:
    Gibt es in Direct3D eigentlich auch soviele depreacted Methoden wie in OpenGL, oder gibt es sogar gar keine?
    Ich glaub das war es dann erstmal. Microsoft hat mit der MSDN ja verdammt gute Arbeit geleistet 😃



  • In D3D gibt es wenig was "deprecated" ist, da die D3D Versionen nicht abwärtskompatibel gehalten werden.

    Anders gesagt: man kann alles < Direct3D 9 als "deprecated" ansehen. Innerhalb einer API gibt es allerdings kaum bis keine Funktionen die "deprecated" sind. Mal abgesehen davon dass man die ganze Fixed-Function Pipeline in Direct3D 9 als "deprecated" ansehen kann.



  • @hustbaer: Ich warte noch immer auf deine Antwort.

    @deprecated: Es gibt keine deprecated Funktionen. Natuerlich gibt es gedankliche deprecated Funktionen, aber nichts ist explizit als deprecated markiert.



  • this->that@keinPW schrieb:

    hustbaer schrieb:

    @this->that: was für eine sinnlose Antwort.

    Und was genau war daran bitte sinnlos?

    Der OP wird wohl gewusst haben dass es andere Formate gibt.

    Und die Antwort "XRGB hat keinen Alpha" ist etwas spärlich, wenn der OP fragt was mit den Alpha-Bits dann gemacht wird.


Anmelden zum Antworten