Click here to Skip to main content
15,885,032 members
Please Sign up or sign in to vote.
3.00/5 (2 votes)
See more:
Hello!!

I need to draw something in DirectX 9.
I am interested to work in a way that the coordinates will be adjusted to pixels, while (0,0) will be the TopLeft corner. Here is what I do:

C++
RECT clientRect;
::GetClientRect(m_hWIN, &clientRect);

D3DXMATRIX matOrtho2D, matIdentity;    

D3DXMatrixOrthoOffCenterLH(&matOrtho2D, 0, clientRect.right, 0, clientRect.bottom, 0.0f, 1.0f);
D3DXMatrixIdentity(&matIdentity);

g_pDirect3D_Device->SetTransform(D3DTS_PROJECTION, &matOrtho2D);
g_pDirect3D_Device->SetTransform(D3DTS_WORLD, &matIdentity);
g_pDirect3D_Device->SetTransform(D3DTS_VIEW, &matIdentity);


This works fine, except the (0,0) is the BottomLeft corner. How can I change it?
Thanks!
Posted
Updated 26-Dec-12 20:12pm
v2

This should be added to the code:
D3DXMatrixTranslation(&matTranslate, 0, (float)clientRect.bottom, 0.0f);
D3DXMatrixRotationX(&matFlip, D3DXToRadian(180));
D3DXMATRIX matCoordTransform = matFlip * matTranslate;

g_pDirect3D_Device->SetTransform(D3DTS_WORLD, &matCoordTransform);
 
Share this answer
 
DirectX uses the bottome left of the image as its origin, as described here[^].
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900