Jump to content
  • Advertisement
Sign in to follow this  
derby

[SlimDX] - June 2010 - Direct2D.RenderTarget.FromDXGI fails

This topic is 2905 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi there,
I am trying to get the DXGI RenderTarget working with Direct2D but I am getting the following exception when creating rendertarget with SWAP chain. I am using SlimDX JUNE 2010 release.
"E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809)"

Any help appreciated.

Here is the sample code.


var desc = new SwapChainDescription()
{
BufferCount = 1,
ModeDescription = new ModeDescription(this.ClientSize.Width, this.ClientSize.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm),
IsWindowed = true,
OutputHandle = this.Handle,
SampleDescription = new SampleDescription(1, 0),
SwapEffect = SwapEffect.Discard,
Usage = Usage.RenderTargetOutput
};

SlimDX.Direct3D10.Device device;
SwapChain swapChain;
SlimDX.Direct3D10.Device.CreateWithSwapChain(null, SlimDX.Direct3D10.DriverType.Hardware, SlimDX.Direct3D10.DeviceCreationFlags.Debug, desc, out device, out swapChain);



SlimDX.DXGI.Surface surface = Surface.FromSwapChain(swapChain, 0);
RenderTargetProperties rp = new RenderTargetProperties()
{
HorizontalDpi = 96,
VerticalDpi = 96,
MinimumFeatureLevel = FeatureLevel.Default,
PixelFormat = new PixelFormat() {AlphaMode = AlphaMode.Premultiplied, Format = SlimDX.DXGI.Format.Unknown},
Type = RenderTargetType.Default,
Usage = RenderTargetUsage.None
};


//The following line works.
SlimDX.Direct3D10.Texture2D backBuffer = SlimDX.Direct3D10.Texture2D.FromSwapChain<SlimDX.Direct3D10.Texture2D>(swapChain, 0);

SlimDX.Direct2D.Factory factory = new Factory(FactoryType.SingleThreaded, DebugLevel.Information);
//This following line fails.
RenderTarget target = RenderTarget.FromDXGI(factory, surface, rp);

Share this post


Link to post
Share on other sites
Advertisement
You need to create a D3D10.1 device with the DeviceCreationFlags.BgraSupport flag set in order to interact with D2D. For example:


SlimDX.Direct3D10_1.Device1 device;
SwapChain swapChain;
SlimDX.Direct3D10_1.Device1.CreateWithSwapChain(null, DriverType.Hardware, DeviceCreationFlags.BgraSupport,
SlimDX.Direct3D10_1.FeatureLevel.Level_10_0, desc, out device, out swapChain);

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!