Ich habe eine Oberfläche (OffScreenPlain oder RenderTarget mit D3DFMT_A8R8G8B8), die ich Pixel (ARGB) zu, von einer Drittanbieter-Funktion kopieren. Vor dem Kopieren von Pixeln wird von LockRect auf Bits zugegriffen.D3D9 Alpha Blending auf den Oberflächen
Diese Oberfläche ist dann StretchRect zum Backbuffer, der (D3DFMT_A8R8G8B8) ist. Surface und Backbuffer sind verschiedene Dimensionen. Die Filterung ist auf D3DTEXF_NONE eingestellt.
Kurz nach dem d3d Gerät erstellt Ich habe Set folgende RenderState Einstellungen
D3DRS_ALPHABLENDENABLE -> TRUE
D3DRS_BLENDOP -> D3DBLENDOP_ADD
D3DRS_SRCBLEND -> D3DBLEND_SRCALPHA
D3DRS_DESTBLEND -> D3DBLEND_INVSRCALPHA
Aber ich sehe keine Alpha-Blending passiert. Ich habe überprüft, dass Alpha in Pixel angegeben ist.
Ich habe einen einfachen Test gemacht, indem ich einen Vertex-Puffer erstellt habe und ein Dreieck zeichne (DrawPrimitive), das mit Alpha Blending angezeigt wird.
In dieser Testoberfläche wurde zunächst StretchRect und dann DrawPrimitive verwendet, und der Oberflächeninhalt wird ohne Alpha-Überblendung angezeigt, und das Dreieck wird mit Alpha-Überblendung angezeigt.
Was fehlt mir hier? Danke