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

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

## 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);
// 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 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.

##### 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 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.

• ### What is your GameDev Story?

In 2019 we are celebrating 20 years of GameDev.net! Share your GameDev Story with us.

• 15
• 10
• 9
• 37
• 16
• ### Forum Statistics

• Total Topics
634128
• Total Posts
3015688
×