Jump to content

  • Log In with Google      Sign In   
  • Create Account

Calling rasterizer from effect file


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 ~Helgon   Members   -  Reputation: 357

Like
0Likes
Like

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

from time to time i find time


Sponsor:

#2 Bacterius   Crossbones+   -  Reputation: 8945

Like
2Likes
Like

Posted 11 September 2012 - 05:32 PM

You just defined "Wireframe" as your rasterizer state structure, so you can't really use "Wireframe" as your fill mode anymore, can you see why? You don't want to call it that, try calling it "wireframeRasterizer" or somesuch. But IIRC, the error is because "Wireframe" isn't a valid constant. It's actually WIREFRAME. Same for culling mode which is BACK. But I could be incorrect... been a long time since I D3D'ed.

Edited by Bacterius, 12 September 2012 - 03:06 AM.

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis


#3 Tom KQT   Members   -  Reputation: 1594

Like
2Likes
Like

Posted 12 September 2012 - 01:19 AM

My bet would also be that the problem is in naming your RasterizerState Wireframe, it then probably thinks that you want to use this rasterizerstate as fillmode? As Bacterius said, try to rename the RasterizerState to something else.
But where I don't agree with Bacterius (and why I'm writing this post) is the second part - Wireframe is perfectly valid as a FillMode, upper and lower case don't matter here.

Edited by Tom KQT, 12 September 2012 - 01:19 AM.


#4 ~Helgon   Members   -  Reputation: 357

Like
0Likes
Like

Posted 12 September 2012 - 03:05 AM

you guys are officially awesome, thanks for the quick answer - i just had to rename the RasterizerState - strange that the example from the book was given that way

from time to time i find time


#5 Bacterius   Crossbones+   -  Reputation: 8945

Like
0Likes
Like

Posted 12 September 2012 - 03:06 AM

But where I don't agree with Bacterius (and why I'm writing this post) is the second part - Wireframe is perfectly valid as a FillMode, upper and lower case don't matter here.

Thanks for the correction Posted Image

The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis





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