Sign in to follow this  
Evil Steve

1:1 pixel:texel ratio with an orthogonal projection matrix

Recommended Posts

Hi all, Is it possible to get a 1:1 pixel:texel ratio using an orthogonal projection matrix, and if so, how? I know I could use transformed vertices to achieve the same thing, but I'd like the flexability of untransformed vertices. At the moment, I have this:
D3DXMatrixOrthoLH(&matrix,1024.0f,768.0f,1.0f,100.0f);
pDevice->SetTransform(D3DTS_PROJECTION,&matrix);
D3DXVECTOR3 vEye(0.0f,0.0f,-50.0f), vAt(0.0f,0.0f,0.0f), vUp(0.0f,1.0f,0.0f);
D3DXMatrixLookAtLH(&matrix,&vEye,&vAt,&vUp);
pDevice->SetTransform(D3DTS_VIEW,&matrix);

But that causes my 100x100 triangle to end up 78x78 pixels, and obviously messes up the texture on it. It's probably something obvious that I'm missing, but I can't seem to see what it is. Any ideas? Cheers, Steve

Share this post


Link to post
Share on other sites
Is your window size 1024x768 (or are you running full screen?)? One way you might be able to achieve what you're looking for is to set the ortho projection to 1.0x1.0. Then, use 0 to 1 as the vertices.

float x,y;
x = 400.0f;
y = 200.0f;
float vX = x/1024;
float vY = y/768;

Simple example. Sorry if this doesn't help you out. Maybe if you could post more code, the actual setting of vertices for instance, and how you create your presentation params.

Chris

Share this post


Link to post
Share on other sites
Well, I found the problem. I'm an idiot.
I managed to create a 800x600 window, then try to use it as if it was 104x768 >_<

It works fine now.
Thanks for the reply [smile]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this