一个关于OpenGL的问题 在Single document的工程,如果用鼠标选取两个点,如何在实际的位置上,用OpenGL命令绘制出一条直线?主要是OnButttonDown中得到的CPoint的坐标应该如何处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键问题是要把鼠标点转换到三维空间,方法是用一根过鼠标点位置,垂直于屏幕的直线和一个目标平面求交。目标平面可以使用户选择的一个平面,也可以是过用户当前选择点,平行于屏幕的平面。============================================================================提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题http://alphasun.betajin.com/ 遇到问题可以给我发消息,给我发信息时请附带原帖地址DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析 世界坐标系中的点,投影到camera的xy平面,裁剪面形成的矩形映射到窗口的句型。根据这个变换关系,你可以得到 鼠标点对应的 camera的xy平面上的点,然后你可以得到相应的世界坐标系中的点。 void CRenderView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); // Set OpenGL perspective, viewport and mode cx = max(cx, cy); cy = max(cx, cy); CSize size(cx,cy); double aspect; aspect = (cy == 0) ? (double)size.cx : (double)size.cx/(double)size.cy; // 设置视口 glViewport(0,0,size.cx,size.cy); glMatrixMode(GL_PROJECTION); glLoadIdentity(); // 设置裁剪面 gluPerspective(45,1,1,15.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glDrawBuffer(GL_BACK); glEnable(GL_DEPTH_TEST); } 两个内存DC之间,怎么产生ALAPH混合 vs.net2003的^k^f不行啊 急!!!VC操作的问题? MSDN的应用方面 谁有写AVI 文件的例子啊! 多谢 多谢了! 如何播放mp3文件中的一段数据? 为什么我的SDI的CMainFrame类没有这些函数? Active文档容器内容的网上传输(紧急求救) 新手求帮助 如果想知道现在都有什么程序在运行,要怎么做? 有关进度条的问题,大家来看一看!! 请问:如何根据不同的视图显示不同的工具栏??
和一个目标平面求交。目标平面可以使用户选择的一个平面,也可以是过用户当前选择点,
平行于屏幕的平面。============================================================================
提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
http://alphasun.betajin.com/ 遇到问题可以给我发消息,给我发信息时请附带原帖地址
DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
根据这个变换关系,你可以得到 鼠标点对应的 camera的xy平面上的点,然后你可以得到
相应的世界坐标系中的点。
{
CView::OnSize(nType, cx, cy);
// Set OpenGL perspective, viewport and mode
cx = max(cx, cy);
cy = max(cx, cy);
CSize size(cx,cy);
double aspect;
aspect = (cy == 0) ? (double)size.cx : (double)size.cx/(double)size.cy;
// 设置视口
glViewport(0,0,size.cx,size.cy);
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); // 设置裁剪面
gluPerspective(45,1,1,15.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glDrawBuffer(GL_BACK);
glEnable(GL_DEPTH_TEST);
}