Sign in to follow this  
ankhd

Can You Copy a ID3D10DepthStencilView To a ID3D10DepthStencilView

Recommended Posts

ankhd    2304

Hi.

 

Im trying to copy a depth buffer to another depth buffer of the same size and dims with

 

Device->CopyResource and I get this.

D3D10: ERROR: ID3D10Device::CopyResource: Cannot invoke CopyResource when the destination Resource was created with the D3D10_BIND_DEPTH_STENCIL BindFlags set. [ RESOURCE_MANIPULATION ERROR #285: COPYRESOURCE_INVALIDDESTINATIONSTATE ]

 

 

 

 

Is there a way around this.

 

 

How else can I copy my Depth buffer.

 

And why the hell can't you do this.

Share this post


Link to post
Share on other sites
tonemgub    2008

D3D10_BIND_DEPTH_STENCIL textures can only be used in the output-merger stage, so if you want to write values into it, you would have to got through a rendering pass... However, you should never need to copy a depth/stencil texture to another. Why don't you just use the source texture as the depth/stencil buffer directly, instead of copying it? Or why don't you just use a normal texture as the destination?

Share this post


Link to post
Share on other sites
mhagain    13430

According to the D3D11 documentation (I know you're using D3D10, bear with me) at http://msdn.microsoft.com/en-us/library/windows/desktop/ff476392%28v=vs.85%29.aspx there is a restriction on CopyResource:

 

 

You can't use an Immutable resource as a destination. You can use a depth-stencil resource as either a source or a destination provided that the feature level is D3D_FEATURE_LEVEL_10_1 or greater. For feature levels 9_x, resources created with the D3D11_BIND_DEPTH_STENCIL flag can only be used as a source for CopyResource.

 

So your way around it is to switch to D3D11 and use the appropriate feature level to enable this.  Any particular reason why you're using D3D10 instead of 11 with feature levels?

Share this post


Link to post
Share on other sites
ankhd    2304

oops.

 

after posting this I went and read some more articles and realised I don't need to copy the depth buffer if I need to copy the Depth buffer Why not just

use the other depth buffer and not have 2 of the same. Man I wasted a good half a day on trying nothing lol.

 

and as for feature level when I started my project my video card was only dx 10 no more Now I have a new card Im not to sure if I can from my code base.

my code base follows Frank D. LUNA Introduction to 3d game programming with dx 10 way of set up.

 

How much work would be involved in that unsure. I would Like to.

 

What I was trying to do was stop my glowing objects from showing through the terrain when blocked by a hill.

 

My first try was to render the whole terrain again to the glow map but this added 15 milliceconds to the render time thats far to much.

 

then I thought I could use a multi render target to out put to both glow render target and sceene for terrain that worked but my lightning could be seen through the terrain

because there was no depth map thats what triggered me to try to copy the 2 depth maps and now its 4 hours later.

 

Thats a case of to long at the computer.

 

I would Like to here any advice on a update to dx 11.

 

Thanks All. and I forgot to say it only adds 3 milliseconds to the render time cool.

Edited by ankhd

Share this post


Link to post
Share on other sites
mhagain    13430

I've done a few updates of D3D10 code to 11.

 

The good news is that the APIs are incredibly similar - aside from the obvious change from 10 to 11 in the interface names, there are only two major differences that you really need to be concerned about:

  • A lot of methods that were on the ID3D10Device interface are now on an ID3D11DeviceContext interface.  ID3D11Device still exists but that's mostly used for creating resources; ID3D11DeviceContext is mostly used for setting state, operating on resources, etc.
  • Most Set calls now hold references to the objects involved which mostly means you need to unbind buffers, views, states, etc before destroying them.

Aside from that you can pretty much mentally translate from one API to the other without huge difficulty.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this