Jump to content

  • Log In with Google      Sign In   
  • Create Account


Rendering Textures behind Three Dimensional Objects?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 markypooch   Members   -  Reputation: 310

Like
0Likes
Like

Posted 28 March 2013 - 04:49 PM

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



Sponsor:

#2 Jutaris   Members   -  Reputation: 473

Like
0Likes
Like

Posted 28 March 2013 - 07:32 PM

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.


My Site -- My Music  -- My Ramblings -- My Game

 Basic Flying Rules:Try to stay in the middle of the air. Do not go near the edges of it. The edges of the air can be recognized by the appearance of ground, buildings, sea, trees and interstellar space. It is much more difficult to fly there.

Come join us for some friendly game dev discussions over in XNA Chat!


#3 irreversible   Crossbones+   -  Reputation: 1234

Like
0Likes
Like

Posted 28 March 2013 - 08:24 PM

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, 28 March 2013 - 08:26 PM.


#4 eppo   Crossbones+   -  Reputation: 2337

Like
0Likes
Like

Posted 29 March 2013 - 12:33 PM

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, 29 March 2013 - 12:41 PM.


#5 slicer4ever   Crossbones+   -  Reputation: 3318

Like
0Likes
Like

Posted 29 March 2013 - 01:51 PM

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, 29 March 2013 - 01:52 PM.

Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS