讀取深度快取中的深度值,並將其螢幕2D座標轉化為場景3D座標
阿新 • • 發佈:2019-02-15
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座標值
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座標值