Jump to content

  • Log In with Google      Sign In   
  • Create Account


Orthographic matrix won't display textured quad


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
2 replies to this topic

#1 CdrTomalak   Members   -  Reputation: 272

Like
0Likes
Like

Posted 14 August 2012 - 03:50 PM

I'm coding a test program to experiment with different matrices. Scaling and rotation are fine, but Orthogonal is causing me no end of problems. My textured quad just doesn't appear. I've scoured the internet for examples, and can't understand why my quad simply won't appear. Any ideas?

float oLeft = 0.0f;
float oRight = 640.0f;
float oBottom = 480.0f;
float oTop = 0.0f;
float oZnear = 0.0f;
float oZfar = 1000.0f;

myOrthoMatrix = SlimDX.Matrix.OrthoOffCenterLH(oLeft,oRight,oBottom,oTop,oZnear,oZfar);
...
float myDepth = 0.5f;
myVectorPositions[0] = new Vector3(-0.1f, 0.1f, myDepth);
myVectorPositions[1] = new Vector3(0.1f, 0.1f, myDepth);
myVectorPositions[2] = new Vector3(-0.1f, -0.1f, myDepth);
myVectorPositions[3] = new Vector3(0.1f, -0.1f, myDepth);

myVectorTexPositions[0] = new Vector2(0.0f,1.0f);
myVectorTexPositions[1] = new Vector2(1.0f,1.0f);
myVectorTexPositions[2] = new Vector2(0.0f,0.0f);
myVectorTexPositions[3] = new Vector2(1.0f,0.0f);

// Attempt to transform the vector positions using the basic scaling matrix we've just created.
for(int a=0;a<noOfVertices;a++)
{
//myVectorPositions[a] = SlimDX.Vector3.TransformCoordinate(myVectorPositions[a],myOrthoMatrix);
//myVectorPositions[a] = SlimDX.Vector3.TransformCoordinate(myVectorPositions[a],myScalingMatrix);
//myVectorPositions[a] = SlimDX.Vector3.TransformCoordinate(myVectorPositions[a],myRotationMatrix);
myVectorPositions[a] = SlimDX.Vector3.TransformCoordinate(myVectorPositions[a],myCombinedMatrix);
}


As you can see from the last extract from my program, I've got other matrices working just fine. I can't seem to crack this one. (screenwidth = 640, screenheight = 480).

Sponsor:

#2 FLeBlanc   Crossbones+   -  Reputation: 3085

Like
1Likes
Like

Posted 14 August 2012 - 03:53 PM

Something that people always seem to forget is that there is a 1:1 relationship between world units and screen units (pixels) when you do an orthographic transform, if the ortho bounds are the same as the screen resolution. What this means is that if you draw an object that is 1x1x1 unit in size, it will appear approximately 1 pixel in size on the screen, regardless of the distance from the camera. In the code you present above, you are drawing an object that is 0.2x0.2x0.2 in size. That means, onscreen it is going to appear to be less than one pixel in size. Make that bad boy bigger.

#3 CdrTomalak   Members   -  Reputation: 272

Like
0Likes
Like

Posted 15 August 2012 - 02:15 PM

Cracked it! FLeBlanc - thank you so much!!! I only got two responses to this question - one here and one on stack overflow - and you are the one who nailed it. Amazing.

Firstly I increased the quad edge length to 2 pixels, scratched my head for a while and then reduced the viewing volume to just 100x100... my quad showed up. I then slapped my own face in disbelief that all I'd done is produced a quad 4 pixels in volume, which was pretty much the same mistake again.

So - I now have a 10 x 10 pixel quad appearing in the top corner of my screen via the orthogonal matrix! Not sure what to do next but just glad it's working and I can see something. Nice one. 8D




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