Sign in to follow this  
markypooch

Rendering Textures behind Three Dimensional Objects?

Recommended Posts

Hello again,

 

My question is how would one go about rendering a texture on a quad that sit's behind a 3D object. Im sure Z-ordering is invloved in some way but I have yet to come across a structure that explicitly lets you set such a parameter

 

Maybe Multiple Render targets?

 

I am using D3D11 and C++, any help will be appreciated, thanks!

 

-Marcus Hansen

Share this post


Link to post
Share on other sites

I'm not well versed in DX specifically, but in theory, this should be a very simple task.

 

If you're trying to draw it in 3d (using a textured quad) you'd just draw the quad first with a Z position behind everything else.

Share this post


Link to post
Share on other sites

You need to make sure you draw the textured quad first, as Jutaris mentioned, or in a more common scenario, make sure you have created a depth buffer, its write flag is "less" or "less or equal" and depth testing (a.k.a. z-testing or reading from the depth buffer) is enabled*. This will allow you to draw non-transparent objects in random order in your scene.

 

* the same applies to depth masking (eg the flag that tells the API whether it should write into the depth buffer or not)

Edited by irreversible

Share this post


Link to post
Share on other sites

If you're drawing non-transparent objects, you should draw them with depth testing enabled. You do this by creating a depth-stencil state object and binding it to the pipeline.

 

http://msdn.microsoft.com/en-us/library/windows/desktop/bb205074(v=vs.85).aspx

 

Make sure you draw objects front to back (so first the 3D object and then the quad) to avoid overdraw. Because the first object's z-buffer value makes the quad's depth test fail, you don't have to run the pixel shader twice.

Edited by eppo

Share this post


Link to post
Share on other sites
if the quad is a full-screen image(basically a background). i'd draw it first, and turn off depth writes(not sure what it is in DX, but in openGL it's called glDepthMask) and depth testing. if it's something else, it'd be best to just position it behind all your objects. Edited by slicer4ever

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