d3d中操作
可以用D3DXVec3Project从3D坐标转换到屏幕坐标 同时可以用D3DXVec3UnProject将屏幕坐标转换成3D坐标!
gl里的操作
CPoint D3DToScreen2D(CPoint3d pt3D ,/ const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4]){ GLdouble x,y,z;
gluProject( pt3D.x, pt3D.y, pt3D.z, modelMatrix, projMatrix, viewport, &x, &y, &z); CPoint ptOut; ptOut.x = int(x); ptOut.y = viewport[3]-int(y);
return ptOut;}
应用:
CPoint CCityPlanView::GetPoint3DTo2D(CPoint3d pt3D){ GLdouble modelview[16]; GLdouble projection[16]; GLint viewport[4]; wglMakeCurrent(m_hDC,m_hRC); glGetDoublev (GL_MODELVIEW_MATRIX, modelview); glGetDoublev (GL_PROJECTION_MATRIX, projection); glGetIntegerv (GL_VIEWPORT, viewport);
CPoint ptOut = D3DToScreen2D(pt3D,modelview,projection,viewport);
wglMakeCurrent(m_hDC,NULL); return ptOut;}
本文来自博客,转载请标明出处:http://blog.csdn.net/qianlima888/archive/2007/10/24/1840984.aspx