Hello everyone, so here is my problem:
I have a png image, which i load to my texture.
| mytex = GraphicsUtility.CreateTexture(dx, "myimage.png", Format.X8R8G8B8); |
*I guess after this stage i got a
red circle on the black background and it seems that it has no alpha map, right?
After that i draw this to my surface:
| dx.SetRenderTarget(0, rtSurf); |
| dx.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.FromArgb(0,0,0,0), 1.0f, 0); //Clean it with black color |
| try |
| { |
| DrawMyCircleTexture(); |
| } |
| finally |
| { |
| dx.SetRenderTarget(0, originalSurface); |
| } |
Then i set up render states and draw surface's texture:
| dx.RenderState.CullMode = Cull.None; |
| dx.RenderState.AlphaBlendEnable = true; |
| dx.RenderState.SourceBlend = Blend.SourceAlpha; |
| dx.RenderState.DestinationBlend = Blend.InvSourceAlpha; |
| dx.RenderState.BlendOperation = BlendOperation.Add; dx.RenderState.AlphaFunction = (Compare)comboAF.SelectedItem; |
| dx.TextureState[0].AlphaOperation = TextureOperation.Modulate; |
| dx.SamplerState[0].AddressU = TextureAddress.Mirror; |
| dx.SamplerState[0].AddressV = TextureAddress.Mirror; |
| dx.SamplerState[0].MinFilter = TextureFilter.Anisotropic; |
| dx.SamplerState[0].MagFilter = TextureFilter.Anisotropic; |
| dx.RenderState.ZBufferEnable = false; dx.RenderState.ZBufferWriteEnable = false; |
| sprite.Begin(SpriteFlags.SortTexture); |
| sprite.Draw2D(mytex, new Rectangle(), new SizeF(), new PointF(), Color.White); //White color to save image colors |
| sprite.End(); |
So here is result images in depence of background color:

Does anyone know why cirlce dissapears? How to keep it's color? What blend do i need?
Thanks