Fixed function and shader not doing same thing?
Members - Reputation: 120
Posted 21 June 2012 - 03:50 PM
The problem I am having is the following.
I make my surface graph using a shader which is pretty simple and based on the book by Frank Luna.
I am feeding a vertex buffer which (I have checked with watches) has x,z coordinates that populate a square (-3,3)x(-3,3).
That appeared to work.
Then I am also trying to draw axes, in the fixed function pipeline, by using DrawPrimitiveUP. At the moment I am trying to draw one line with D3DPT_LINESTRIP and passing data (-3.02,0,3.02),(-3.02,0,-3.02).
The line appears, but well away from the edge of the graph! If I instead set (-2.4,0,2.4),(-2.4,0,-2.4) then it appears still a bit outside the graph square.
(Meanwhile, if I draw line (3,0,3),(3,10,3) then it looks like it appears in the correct place, though I'm still checking that further.)
I have checked, checked, checked that the view*projection matrix being used in SetTransform is the same as is passed to the shader, and the shader does not do anything funny.
Any ideas what could be going on I would welcome. Quite happy to provide more information if there's anything you'd like to ask.
Crossbones+ - Reputation: 5598
Posted 21 June 2012 - 04:55 PM
It was also once the case that shaders may not give the same result as the fixed pipeline; OpenGL specifies that this is allowed (or at least doesn't specify that it's not) (and it was known to happen in the old days - hence the existence of ftransform and option ARB_position_invariant) but I haven't found anything specific to D3D, and I doubt if it's relevant anymore as all modern gfx hardware emulates the fixed pipeline using shaders anyway.
Edited by mhagain, 21 June 2012 - 04:55 PM.
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.
Members - Reputation: 1165
Posted 22 June 2012 - 01:23 AM
(It certainly wasn't z-fighting, it all got fixed just by rendering everything using shaders.)
Edited by Tom KQT, 22 June 2012 - 01:25 AM.
Members - Reputation: 120
Posted 22 June 2012 - 05:42 AM
I now established that the error was in the eye of the beholder - the two things aren't meant to touch, they are at different y-coordinates. The axes are in the right place.
My first query and it was unintentionally a windup.
Now I just have to work out how to make text appear at device coordinates instead of screen coordinates.