Jump to content

  • Log In with Google      Sign In   
  • Create Account


#Actual~Helgon

Posted 11 September 2012 - 05:07 PM

Hi, i have following problem. To set the rastersizer state through c++ code works but when i try to set the rasterizer with an effect file i get the error: Assigment FillMode: Only literal right-hand side values are allowed in the state blocks Effects performance mode
and then the whole application crashes.

The .fx file (source from introduction to directx 10):

[source lang="cpp"]cbuffer cbPerObject{ float4x4 gWVP;};cbuffer cbTime{ float gTime;};void VS(float3 iPosL: POSITION, float4 iColor: COLOR, out float4 oPosH: SV_POSITION, out float4 oColor: COLOR){ oPosH = mul(float4(iPosL, 1.0f), gWVP); oColor = iColor;}float4 PS(float4 posH: SV_POSITION, float4 color: COLOR) : SV_Target{ return color;}RasterizerState Wireframe{ FillMode = Wireframe; CullMode = Back; FrontCounterClockwise = false;};technique10 ColorTech{ pass P0 { SetVertexShader(CompileShader(vs_4_0, VS())); SetGeometryShader(NULL); SetPixelShader(CompileShader(ps_4_0, PS())); SetRasterizerState(Wireframe); }}[/source]

and now im not sure what to do in the c++ code. is it necessary to call something in the effect pass or should it already work? sorry if the question is pretty dumb but im new to directx and hlsl

[source lang="cpp"]D3D10_TECHNIQUE_DESC techDesc; mTech->GetDesc(&techDesc); for(UINT p = 0; p < techDesc.Passes; ++p) { mTech->GetPassByIndex(p)->Apply(0); //do i need to set the rasterizer here somwhow? (when i do it through the fx file) ? mBox.draw(); }[/source]

regards helgon

#1~Helgon

Posted 11 September 2012 - 05:02 PM

Hi, i have following problem. To set the rastersizer state through c++ code works but when i try to set the rasterizer with an effect file i get the error: Assigment FillMode: Only literal right-hand side values are allowed in the state blocks Effects performance mode
and then the whole application crashes.

The .fx file (source from introduction to directx 10):

[source lang="cpp"]cbuffer cbPerObject{ float4x4 gWVP;};cbuffer cbTime{ float gTime;};void VS(float3 iPosL: POSITION, float4 iColor: COLOR, out float4 oPosH: SV_POSITION, out float4 oColor: COLOR){ oPosH = mul(float4(iPosL, 1.0f), gWVP); oColor = iColor;}float4 PS(float4 posH: SV_POSITION, float4 color: COLOR) : SV_Target{ return color;}RasterizerState Wireframe{ FillMode = Wireframe; CullMode = Back; FrontCounterClockwise = false;};technique10 ColorTech{ pass P0 { SetVertexShader(CompileShader(vs_4_0, VS())); SetGeometryShader(NULL); SetPixelShader(CompileShader(ps_4_0, PS())); SetRasterizerState(Wireframe); }}[/source]

and now im not sure what to do in the c++ code. is it necessary to call something in the effect pass or should it already work? sorry if the question is pretty dumb but im new to directx and hlsl

[source lang="cpp"]D3D10_TECHNIQUE_DESC techDesc; mTech->GetDesc(&techDesc); for(UINT p = 0; p < techDesc.Passes; ++p) { mTech->GetPassByIndex(p)->Apply(0); //do i need to set the rasterizer here somwhow? (when i do it through the fx file) ? mBox.draw(); }[/source]

regards helgon

PARTNERS