Renderziel alpha (Direct3D 9)
Der Framepuffer-Blender kann jetzt Alphakanäle unabhängig von der Farbkanalvermischung bei Renderzielen mischen. Dieses Steuerelement ist mit einem neuen Renderzustand D3DRS_SEPARATEALPHABLENDENABLE aktiviert.
Wenn D3DRS_SEPARATEALPHABLENDENABLE auf FALSE- festgelegt ist (dies ist die Standardbedingung), sind die auf Alpha angewendeten Renderzielmischungsfaktoren und -operationen identisch mit denen, die für die Vermischung von Farbkanälen definiert sind. Ein Treiber muss die D3DPMISCCAPS_SEPARATEALPHABLEND Cap festlegen, um anzugeben, dass er die Renderziel-Alphamischung unterstützen kann. Achten Sie darauf, D3DRS_ALPHABLEND zu aktivieren, um der Pipeline mitzuteilen, dass die Alphamischung erforderlich ist.
Um die Faktoren im Alphakanal der Renderziel-Blender zu steuern, werden zwei neue Renderzustände wie folgt definiert:
D3DRS_SRCBLENDALPHA
D3DRS_DESTBLENDALPHA
Wie die D3DRS_SRCBLEND und D3DRS_DESTBLEND können diese auf einen der Werte in der D3DBLEND-Enumeration festgelegt werden. Die Einstellungen für Quell- und Zielmischungen können auf verschiedene Arten kombiniert werden, abhängig von den Einstellungen in den Membern "SrcBlendCaps" und "DestBlendCaps" von D3DCAPS9.
Die Alphamischung erfolgt wie folgt:
renderTargetAlpha = (Alpha-in * srcBlendOp) BlendOp (Alphart * destBlendOp)
Wo:
- Alpha-in ist der Eingabe-Alphawert.
- srcBlendOp ist einer der Mischungsfaktoren in D3DBLEND.
- BlendOp ist einer der Mischungsfaktoren in D3DBLENDOP.
- alphart ist der Alphawert des Renderziels.
- destBlendOp ist einer der Mischungsfaktoren in D3DBLEND.
- renderTargetAlpha ist der endgültige gemischte Alphawert.
Verwandte Themen