1. 程式人生 > >讀取深度快取中的深度值,並將其螢幕2D座標轉化為場景3D座標

讀取深度快取中的深度值,並將其螢幕2D座標轉化為場景3D座標

mouse_x=LOWORD(lParam);//滑鼠的x座標
   mouse_y=HIWORD(lParam);//滑鼠的y座標
   glGetDoublev(GL_MODELVIEW_MATRIX, modelview);//檢視矩陣
   glGetDoublev(GL_PROJECTION_MATRIX, projection);//投影矩陣
   glGetIntegerv(GL_VIEWPORT, viewport);//視口
   winX=(float)mouse_x;//OGL中的視窗x座標
   winY=(float)viewport[3]-(float)mouse_y;//OGL中的視窗y座標
   glReadPixels(mouse_x,//x座標
                     int(winY),//y座標
                    1,1,//讀取一個畫素
                    GL_DEPTH_COMPONENT,//獲得深度資訊
                    GL_FLOAT,//資料型別為浮點型
                    &winZ);//獲得的深度值儲存在winZ中
   gluUnProject((GLdouble)winX,(GLdouble)winY,(GLdouble)winZ,modelview,projection,viewport,&object_x,&object_y,&object_z);
//獲得OGL中的x,y,z座標值