该怎样渲染环境贴图?

千分散尽还复来 2013-06-06 10:42:06
我用下面的顺序渲染环境贴图,出错。请过来人指点一下,先谢了!

if( SUCCEEDED( pDevice3D->BeginScene()))
{
//保存最初创建的表面
//开始渲染CUBE贴图
PDIRECT3DSURFACE9 pSur ;
pCubeTexture -> GetCubeMapSurface((D3DCUBEMAP_FACES) 0 , 0 , &pSur ) ;
pDevice3D -> SetRenderTarget( 0 , pSur ) ;
pDevice3D -> SetDepthStencilSurface( pSur_DS ) ;
pDevice3D->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DXCOLOR(0.5f,0.5f,1.f,1.f), 1.0f, 0) ;//不知道是一个方体清屏一次,还是每个面清屏一次

g_pRenderToEnvMap ->BeginCube( pCubeTexture ) ;
for ( int j = 0 ; j < 6 ; j ++ )
{
g_pRenderToEnvMap ->Face( ( D3DCUBEMAP_FACES) j , D3DX_DEFAULT ) ;
RenderObjectsInCube() ;//渲染环境贴图上应该包含的对象
}
g_pRenderToEnvMap -> End( 0 ) ;
SAFE_RELEASE ( pSur ) ;
}
//恢复原先的表面
//渲染场景
}

从上面代码的名字可以看出它们的用途,我就不具体说明了。
输出如下两条错误信息:
End called without first calling Begin
BeginCube called inside a scene
我不知道为什么错,请大侠们指点一下。谢谢!
...全文
192 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
回楼上,pDevice3D->EndScene( )在上面代码的最后一行,忘记帖上了. 网上搜索了下,两个回复也叫人哭笑不得: http://bbs.csdn.net/topics/350268459一楼; 还有一个英文网页,也说"重建了,没问题". 真不知所措了.
彩阳 2013-06-06
  • 打赏
  • 举报
回复
没看你使用pDevice3D->EndScene( )函数的调用啊。

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧