参考: http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html
参考: http://www.360doc.com/content/13/0906/11/593831_312575920.shtml
参考: http://blog.csdn.net/windows_nt/article/details/7495387
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
要实现在Ogre-三维窗口上添加导航小窗口
有两种方法,一种是使用Ogre多视口实现,一种是使用Windows的透明窗口实现
下面使用Ogre的多视口来实现
//-------------------------------------------------------------------------------------------------------------
首先创建第二个Camera
// 画中画相机 m_pCameraInner = m_pSceneManager->createCamera("InnerCam");//创建名为PlayerCam的摄像机 m_pCameraInner->setPosition(Vector3(0,0,500));//设置摄像机的位置 m_pCameraInner->lookAt(Vector3(0,0,0));//摄像机的方向 m_pCameraInner->setNearClipDistance(5);//位置单位的近距离剪裁 |
然后创建第二个ViewPort,该ViewPort点据窗口的一角
// 画中画视口 Viewport *vpInner = m_pWindow->addViewport(m_pCameraInner, 1, 0.75, 0, 0.25, 0.25); // 放置在左上角 vpInner->setBackgroundColour(ColourValue(0, 0, 1)); // 设置底色 vpInner->setOverlaysEnabled(false); // 不启用overlay m_pCameraInner->setAspectRatio(Real(vp->getActualWidth())/Real(vp->getActualHeight())); // 视口纵横比 |
下面使用windows的透明窗口实现
//-------------------------------------------------------------------------------------------------------------
a. 首先,建立一个无边框的对话框,
b. 然后在对话框的OnInitDialog中设置透明窗体属性,设置透明度
// 设置窗体为半透明 SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE)|WS_EX_LAYERED); SetLayeredWindowAttributes(0, 128, LWA_ALPHA); |
c. 再把窗体的位置调整到左上角
d. 可以使用OpenGL在窗体中绘制元素
这样就形成了画中画的效果,并且这个画中画的效果是半透明效果
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
原文地址:http://blog.csdn.net/chunyexiyu/article/details/44754283