Jump to content
  • Advertisement
Sign in to follow this  
mojobojo

OpenGL Trying to reverse the Projection Matrix to Y being up.

This topic is 826 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm trying out some direct3d stuff coming from opengl and I have a question regarding the projection matrix.

I would like the coordinate system to look like so

     y - 720
     ^
     |
     |
     |
     |
     |
     |
     |
     |
0, 0 ---------------------------------> x - 1280

Normally in opengl I would do something like this.

// other code....
glMatrixMode(GL_PROJECTION);
m4 Projection = Orthographic(0.0f, 1280.0f, 0.0f, 720.0f, 1.0f, -1.0f);
glLoadMatrixf(Projection.f);
// other code....

internal m4
Orthographic(f32 Left, f32 Right, f32 Bottom, f32 Top, f32 Near, f32 Far) {
    m4 Result = IdentityMatrix();

    Result.m0[0] = 2.0f / (Right  - Left);
    Result.m1[1] = 2.0f / (Top - Bottom);
    Result.m2[2] = -2.0f / (Far - Near);
    Result.m3[0] = -(Right + Left) / (Right - Left);
    Result.m3[1] = -(Top + Bottom) / (Top - Bottom);
    Result.m3[2] = -(Far + Near) / (Far - Near);

    return Result;
}

In direct3d I am doing something similar (or so I think)

D3DXMATRIX ProjectionMatrix;
// I know opengl is right handed so I make a right handed ortho right?
D3DXMatrixOrthoOffCenterRH(&ProjectionMatrix, 0.0f, Width, 0.0f, Height, 1.0f, -1.0f);
Direct3DDevice->SetTransform(D3DTS_PROJECTION, &ProjectionMatrix);

Problem is I don't see anything on the screen and cant seem to figure out how I oriented it.

Edited by mojobojo

Share this post


Link to post
Share on other sites
Advertisement

Do you use view matrix with your orthogonal projection? It defines handedness much more, projection matrix does as much as invert the depth axis to conform into depth comparison (postive or negative) according to handedness of view matrix.

Share this post


Link to post
Share on other sites

Do you use view matrix with your orthogonal projection? It defines handedness much more, projection matrix does as much as invert the depth axis to conform into depth comparison (postive or negative) according to handedness of view matrix.

 

I set the view and world matrix to an identity matrix.

D3DXMATRIX IdentityMatrix;
D3DXMatrixIdentity(&IdentityMatrix);
Direct3DDevice->SetTransform(D3DTS_WORLD, &IdentityMatrix);
Direct3DDevice->SetTransform(D3DTS_VIEW, &IdentityMatrix);

Share this post


Link to post
Share on other sites

You do not orient it nor translate it, but if you will use both versions, LH and RH for projection, you should spot some object at some point, considering it is in scale of the orthogonal projection- width height top down world values.

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!