Sign in to follow this  
Tispe

Culling and Z buffering without using the ID3DXEffect interface

Recommended Posts

Tispe    1468
Hello

After reading [url="http://www.two-kings.de/tutorials/dxgraphics/dxgraphics18.html"]http://www.two-kings.de/tutorials/dxgraphics/dxgraphics18.html[/url] 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?

Share this post


Link to post
Share on other sites
kubera    1587
You could call Direct3D device's methods.
A sample below:

[CODE]
pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
[/CODE]

Share this post


Link to post
Share on other sites
Tispe    1468
I thought once you move to a programmable pipeline you forget about SetRenderState() as states are overwritten by the shader?

Share this post


Link to post
Share on other sites
RobinsonUK    108
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.

Share this post


Link to post
Share on other sites
mhagain    13430
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).

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