|
|
发表于 2005-11-14 22:32:00
|
显示全部楼层
Re:请问如何在OpenGL编程中实现较精确的定位选择!!!
// 首先在你的 Opengl 初始化代码里加入上面一句,它可以让你获取屏幕上某一点的三维坐标
glReadBuffer(GL_BACK);
// 然后请看下面的函数,(摘自<林海雪源>), 我也想做这么个东东,现在只是想好了思路,等我把一些其他的东东忙完了才能做.若做好了再把代码发上来吧
void CHeightmap::GetFocusPos()
{
float depth[2];
int xpos=CGameSetting::m_iScrWidth/2; // 获取屏幕中心点坐标(相对于屏幕的二维坐标)
int ypos=CGameSetting::m_iScrHeight/2;
glReadPixels(xpos,ypos,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,depth); // 获取屏幕中心点的深度(在三维世界中的深度)
GLdouble ModelMatrix[16], ProjMatrix[16];
glGetDoublev(GL_MODELVIEW_MATRIX, ModelMatrix);// 获取模型转换矩阵
glGetDoublev(GL_PROJECTION_MATRIX, ProjMatrix);// 获取发散矩阵
GLint Viewport[4]={0,0,CGameSetting::m_iScrWidth,CGameSetting::m_iScrHeight}; //获取视口
gluUnProject(xpos,ypos,depth[0],// 求出屏幕中心点在三维世界中的真实坐标
ModelMatrix, ProjMatrix, Viewport,
&m_focusPosX, &m_focusPosY, &m_focusPosZ);
}
随着这个思路,把函数中的屏幕中心点坐标换成你的鼠标单击点坐标,然后............ [em1] [em1] [em1] |
|