   [.net] Alpha Blending textures help
  Basically, I am writing a small game in C# using direct3D 9 and .net 1.1I am trying to draw a texture that has part of it colored Magenta (255,0,255) so that the magenta part is transparent. I have ran other demos that do this properly but for some reason my application just shows the color black where I want my transparency to go.Here are the relavant parts of my code:Creating the devicepublic bool InitializeGraphics(){try{// Now  setup our D3D stuffPresentParameters presentParams = new PresentParameters();presentParams.Windowed=true;presentParams.SwapEffect = SwapEffect.Discard;device = new d3d.Device(0, d3d.DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);device.DeviceReset += new System.EventHandler(this.OnResetDevice);this.OnResetDevice(device, null);return true;}catch (DirectXException){ return false; }}Setting up the RenderStatespublic void OnResetDevice(object sender, EventArgs e){d3d.Device device = (d3d.Device)sender;// Set statedevice.RenderState.CullMode = Cull.None;device.RenderState.ZBufferEnable = false;device.RenderState.Lighting = false;device.RenderState.AlphaSourceBlend = Blend.SourceAlpha;device.RenderState.AlphaDestinationBlend = Blend.InvSourceAlpha;device.RenderState.AlphaBlendEnable = true;}Rendering (Note: I have tried a LOT of different TextureState operations / combinations but am still welcome to try others)public void Render( int delta, CModelManager mm ){if (device == null) return;//Clear the backbuffer to a blue color device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0);//Begin the scenedevice.BeginScene();SetupMatrices();// Rendering of scene objects can happen heredevice.SetStreamSource(0, vb, 0);device.VertexFormat = CustomVertex.PositionTextured.Format;device.SetTexture( 0, model.GetTexture() );device.TextureState[0].ColorOperation = TextureOperation.SelectArg1;device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;device.TextureState[0].AlphaOperation = TextureOperation.SelectArg1;device.TextureState[0].AlphaArgument1 = TextureArgument.TextureColor;device.DrawPrimitives(PrimitiveType.TriangleList, model.GetVBPos, model.GetNumVertices() / 3);//End the scenedevice.EndScene();device.Present();//debugConsole.WriteLine("Delta: {0}", delta);}Loading my texture:texTexture = TextureLoader.FromFile( dev, Application.StartupPath + strTexture, 0, 0, 1, Usage.None, Format.Unknown, Pool.Managed, Filter.None, Filter.None, Color.Magenta.ToArgb() );After looking at a few other peoples projects that have the alpha blending WORKING, I have no idea what is wrong with mine. Please, if you see anything wrong with the code or can give me any suggestions, I would greatly appreciate it.Thank you   
  What image format are you using to store your textures?  Looking over your code, you appear to be doing everything pretty much correctly.  Perhaps it's not your settings, but something else ...First off, make sure that you verify that your image Magenta and DX's Magenta are both really 255,0,255.  I know it sounds kinda stupid, but sometimes these things happen :-).  Also, if you're saving your image in an indexed format or a format that utilizes lossy compression, it's possible that the precise color value has been lost.Also, I've had trouble before with MDX with some hinky formats where it loaded the image data backwards (for instance, the image data was stored as BGRA and DX thought otherwise).  It's possible.At least make absolutely sure that your image data is loading properly before you tear out all of your hair :-).  Try setting a known pixel to your color key value and comparing it with System.Drawing.Colors.Magenta during runtime.  If the test turns out to be correct, then at least you know you can rule out image problems as the cause.In the mean time, I'll do a bit more research.-DaveEdit:  Also, take note of the fact that the texture loader considers the alpha value of the colorkey to be significant.  IE, 0x00000000 and 0xFF000000 are two different color keys, even though they are both black.   ;  Thank you for our suggestions.I am using mspaint to save the images as simple .bmp files. I am positive that it is true magenta because using my current codes, all the magenta in my images turn BLACK instead of becoming TRANSPARENT. When I change my color key to some other color that my images hold, that new color becomes black and I can see the magenta again. I also checked the Color.Magenta.A value and it was indeed 255. I even went as far as to change the alpha component to 0 and the magenta color (which should be transparent) continues to display as black.My current code (the stuff that is posted) is basically taken from someone's exampe program that they wrote where the alpha blending does work so I know it is not my video card or drivers or something.Any more suggestions would be helpful. I am wondering if it is an ordering problem? Like I should be one operation before another but I have it backwards... this is really confusing. Please let me know if you see anything out of place. Thank you.   ;  Iso,   It dawned on me about 15 minutes after I posted that you had to have had the colors right or they wouldn't have rendered as black :-).  Anyways, can you post a copy of your source in a zipfile on one of those free file host thingies and drop a link here for it?  It may have something to do with the order you are doing things in, or some other small detail that is not showing up in the code you posted.-Dave   ;  Well, I simplified my source somewhat for this post here is the entire source for my project so far: http://download.isopimp.com/shooter.rar   ;  Your render states are incorrect.Instead of: Device.RenderState.AlphaSourceBlend    = Blend.SourceAlpha;Device.RenderState.AlphaDestinationBlend    = Blend.InvSourceAlpha;They should be:Device.RenderState.SourceBlend = Blend.SourceAlpha;Device.RenderState.DestinationBlend = Blend.InvSourceAlpha;   