游戏开发中经常涉及到3D坐标定位以及3D坐标转换成屏幕坐标今天我们就来用代码实现下看下面代码通过代码来学习中国自学编程网 www.zxbc.cn
CPo D3DToScreen2D(CPo3d pt3D ,\\
const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GL viewport[4])
{
GLdouble x,y,z;
gluProject( pt3D.x, pt3D.y, pt3D.z,
modelMatrix, projMatrix, viewport,
&x, &y, &z);
CPo ptOut;
ptOut.x = (x);
ptOut.y = viewport[3]-(y);
ptOut;
}
应用:
CPo CCityPlanView::GetPo3DTo2D(CPo3d pt3D)
{
GLdouble modelview[16];
GLdouble projection[16];
GL viewport[4];
wglMakeCurrent(m_hDC,m_hRC);
glGetDoublev (GL_MODELVIEW_MATRIX, modelview);
glGetDoublev (GL_PROJECTION_MATRIX, projection);
glGetIntegerv (GL_VIEWPORT, viewport);
CPo ptOut = D3DToScreen2D(pt3D,modelview,projection,viewport);
wglMakeCurrent(m_hDC,NULL);
ptOut;
}
由于从GLdouble 转换成 使得这种思路方法存在个单位误差!
最新评论