爲了澄清事情,我想要做的是獲取openGL座標並在我的mfc代碼中操作它們。不要獲得一個openGL對象。我正在使用mfc來控制openGL中對象的位置。嘗試將openGL轉換爲MFC座標,並遇到與「gluProject」有關的問題
嗨,我試圖找到在網絡上naswer並不能找到一個完整的解決方案,我可以使用,這將工作...
我正在開發一個MFC項目靜態圖片作爲繪製我遊戲紋理的openGL類的畫布。
關於moush down,我需要從openGL類中檢索一個形狀座標。
我正在尋找一種方法來openGL的座標轉換到MFC座標,但無論我怎麼努力我使用gluProject或gluUnProject(我試着做左右逢源,但非工作)
後收到垃圾GLdouble modelMatrix[16];
glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix);
GLdouble projMatrix[16];
glGetDoublev(GL_PROJECTION_MATRIX,projMatrix);
int viewport[4];
glGetIntegerv(GL_VIEWPORT,viewport);
POINT mouse; // Stores The X And Y Coords For The Current Mouse Position
GetCursorPos(&mouse); // Gets The Current Cursor Coordinates (Mouse Coordinates)
ScreenToClient(hWnd, &mouse);
GLdouble winX, winY, winZ; // Holds Our X, Y and Z Coordinates
winX; = (float)point.x; // Holds The Mouse X Coordinate
winY; = (float)point.y; // Holds The Mouse Y Coordinate
winY = (float)viewport[3] - winY;
glReadPixels(winX, winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);
GLdouble posX=s1->getPosX(), posY=s1->getPosY(), posZ=s1->getPosZ(); // Hold The Final Values
gluUnProject(winX, winY, winZ, modelMatrix, projMatrix, viewport, &posX, &posY, &posZ);
gluProject(posX, posY, posZ, modelMatrix, projMatrix, viewport, &winX, &winY, &winZ);
這只是我試過的代碼的一部分。當然不是gluProject和gluUnProject在一起。只是讓他們在這裏展示.....我知道那裏有很多垃圾,它來自我的一些嘗試......
p.s.我已經嘗試了許多更多的組合和Web上的例子,似乎沒有什麼在我的情況下工作....
任何人都可以告訴我什麼是正確的方式來進行轉換?
10X
什麼是「MFC座標」? – genpfault 2010-06-01 14:17:31
MFC座標與openGL座標不同,MFC座標從邏輯屏幕的左上角開始,openGL座標從screan的midle開始。所以我需要一個系統從一個轉換到另一個,所以我可以在我的程序中使用它們。 – Erez 2010-06-01 19:13:35