OGRE渲染输出到MFC
来源:互联网 发布:高通网络解锁工具 编辑:程序博客网 时间:2024/06/05 10:35
折腾了一天基本搞定, 其实也挺容易, 关键要注意几个地方
1)因为不在使用OGRE默认的配置窗口来初始化RenderSystem,现在这一步必须自己来做。首先设置配置文件路径,然后轮询可用的RenderSystem。这里默认使用Direct3D9 Render System。
// 和原来一样设置插件、资源路径,设置过后就可以轮讯可用的RenderSystem了
setupResources();
// 指定使用Direct3D9 Render System渲染子系统。
RenderSystemList *rl = Root::getSingleton().getAvailableRenderers();
RenderSystemList::iterator it = rl->begin();
D3D9RenderSystem *mRSys = NULL;
while( it != rl->end() )
{
if( -1 != ( *it )->getName().find( "3D9" ) )
{
mRSys = ( D3D9RenderSystem* )( *it );
break;
}
it++;
}
// 配置框中的选项需要手动设置。
mRSys->initConfigOptions();
mRSys->setConfigOption( "Anti aliasing", "None" );
mRSys->setConfigOption( "Floating-point mode", "Fastest" );
mRSys->setConfigOption( "Full Screen", "No" );
mRSys->setConfigOption( "Rendering Device", "NVIDIA GeForce2 MX/MX 400" );
mRSys->setConfigOption( "VSync", "No" );
mRSys->setConfigOption( "Video Mode", "640 x 480 @ 32-bit colour" );
// 起用
mRoot->setRenderSystem( mRSys );
2)剩下的初始化过程和ExampleApplication基本一致,只不过现在不需要由OGRE自动创建窗体,应该将MFC视图的句柄传过去初始化。
// 初始化,传入false表示不需要OGRE自动创建窗口
mRoot->initialise( false );
// 手动创建渲染窗口,在这里我们将MFC视图的句柄传入
NamevaluePairList miscParams;
miscParams["externalWindowHandle"] = StringConverter::toString( ( size_t )mWnd );
mWindow = mRoot->createRenderWindow( "View", 640, 480, false, &miscParams );
到次初始化过程已经完毕,这时候运行程序就得到一个漆黑的MFC窗口。
3)因为现在使用是视图的WndProc,我们必须自己处理更新和触发FrameStart事件.
// 触发FrameStart, FrameEnd事件
void update( void )
{
mRoot->_fireFrameStarted();
mWindow->update();
mRoot->_fireFrameEnded();
}
//在视图的OnDraw时间里,调用update
void CMFCRenderView::OnDraw(CDC* /*pDC*/)
{
CMFCRenderDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
update();
}
这样还不够,WM_PAINT事件并不由我们控制,当窗体静静的趟在那的时候是不会触发的,因此我们通过设置一个timer来模拟没帧的更新,
// 20ms触发一次
SetTimer( 100, 20, 0 );
void CMFCRenderView::OnTimer(UINT nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
update();
__super::OnTimer(nIDEvent);
}
- OGRE渲染输出到MFC
- OGRE渲染输出到MFC (转)
- OGRE 渲染 到 MFC
- OGRE 渲染 到 MFC
- Ogre渲染到纹理
- OGRE渲染到纹理
- OGRE Demo_RenderToTexture 渲染到纹理
- OGRE Demo_RenderToTexture 渲染到纹理
- OGRE嵌入到MFC
- OGRE嵌入到MFC
- OGRE嵌入到MFC
- 将OGRE渲染到MFC框架中的实现思路及问题
- Ogre中渲染到纹理的步骤
- 将Cocos2dX渲染到MFC窗口上
- 将Cocos2dX渲染到MFC窗口上
- 利用Ogre的渲染到材质技术实现Ogre截屏功能
- 利用Ogre的渲染到材质技术实现Ogre截屏功能
- ogre+mfc
- 27日.BABY COMING.
- Atlas指南: 建立一个AJAX 涂鸦程序(三)
- 如何成为一个优秀的SOA架构师?
- JDOM 简介
- 帮大家理清一下我们将用到工具
- OGRE渲染输出到MFC
- 掌握 Ajax,第 1 部分: Ajax 简介
- 确定开始培训
- 一篇让我思考良久的文章
- JDOM遍历程序
- JSP随笔
- How Display and Iterate through vsSwitch Nodes and Masks
- 掌握 Ajax,第 2 部分: 使用 JavaScript
- nj motorola