Jump to content

  • Log In with Google      Sign In   
  • Create Account


Culling and Z buffering without using the ID3DXEffect interface


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 Tispe   Members   -  Reputation: 1014

Like
0Likes
Like

Posted 16 March 2012 - 04:07 AM

Hello

After reading http://www.two-kings.de/tutorials/dxgraphics/dxgraphics18.html I have implemented a Vertex Shader and a Pixel shader without using the ID3DXEffect interface. Shortly after finishing this tutorial with my project I was plagued with culling and zbuffering glitches.

Aren't Techniques and Passes a part of the ID3DXEffect interface? If so, how do I implement culling and z buffering etc without the effect interface?

Sponsor:

#2 kubera   Members   -  Reputation: 903

Like
0Likes
Like

Posted 16 March 2012 - 05:12 AM

You could call Direct3D device's methods.
A sample below:

pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE,  FALSE );
pd3dDevice->SetRenderState( D3DRS_CULLMODE,  D3DCULL_CCW );


#3 Tispe   Members   -  Reputation: 1014

Like
0Likes
Like

Posted 16 March 2012 - 05:23 AM

I thought once you move to a programmable pipeline you forget about SetRenderState() as states are overwritten by the shader?

#4 RobinsonUK   Members   -  Reputation: 108

Like
1Likes
Like

Posted 16 March 2012 - 06:06 AM

No Tispe. The programmable pipeline still has certain flags and switches to do various things. I suppose in the near future even that will disappear, but for now you still have the modes and enables/disables as usual.

#5 mhagain   Crossbones+   -  Reputation: 7817

Like
0Likes
Like

Posted 16 March 2012 - 09:05 AM

SetRenderState is still needed in the programmable pipeline. Effects hides some of this for you, but it's still there.
SetSamplerState may be still used, although it may also be superseded by sampler options set in your shader code.
SetTextureStageState is removed.

Some SetRenderState calls - like lighting - are however obsoleted; most are not. You need to understand the various pipeline stages, where each state applies to each stage, and whether or not each state is superseded by the programmable pipeline (and where this is optional or mandatory).

The effects framework actually provides a wrapper around the standard Set*State calls (with the exception of SetTextureStageState) - you can see this in action (and confirm it for yourself) by creating an ID3DXEffectStateManager and examining what it does in your debugger of choice (or by using PIX).

It appears that the gentleman thought C++ was extremely difficult and he was overjoyed that the machine was absorbing it; he understood that good C++ is difficult but the best C++ is well-nigh unintelligible.





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