SetTechnique does more then I want...

This topic is 1814 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

Hi,

Through profiling with PIX, I found out that a specific techniqe in my shader is executed, although I don't call it from my code.

I have a function in my code that sets a technique:

bool CD3d::SetShaderTechnique(CD3dscene *pD3dscene, int pEffectIndex, char *pTechnique)
{
if(D3DERR_INVALIDCALL == pD3dscene->mEffect[pEffectIndex]->SetTechnique(pTechnique)) return false;
return true;
}



Searched through whole source if I use SetTechnique somewhere else, not the case.

When I run my code and debug on this line, it's only called with technique 'OpaqueShader', but in PIX I see the render states, settechnique etc. of my 2nd technique in the shader. I also overwritten 'pTechnique' but 'OpaqueShader' to test, no difference. Filling in 'testbla' I get correct error handling that the technique doesn't exist.

Am I overseeing something, is D3DX effect doing somethin I don't know?

Here are the 2 techniques:

/***********************************************************/
/**          OPAUQE SHADER, REGULAR MESHES         *********/
/***********************************************************/

{
pass P0
{
AlphaBlendEnable    = FALSE;

}
}

/***********************************************************/
/**   BLENDING SHADER, MESHES WITH BLENDED TEXTURES  *******/
/***********************************************************/

{
pass P0
{
AlphaBlendEnable    = TRUE;
SrcBlend            = SRCALPHA;
DestBlend           = INVSRCALPHA;
AlphaOp[0]          = SelectArg1;
AlphaArg1[0]        = Texture;

}
}