战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  257 随笔 :: 0 文章 :: 506 评论 :: 0 Trackbacks

D3D9下的获得RenderTarget有2种方法

1. 使用D3DXCreateTexture或者Device->CreateTexture 创建纹理

    调用Device->GetSurfaceLevel(0, &SurfacePtr );获得Surface指针

   将Surface指针使用Device->SetRenderTarget设置上去即可开始绘制

   注意:D3DXCreateTexture创建的是2的n次幂的纹理,而Device->CreateTexture 创建的则可以是任意大小的纹理

   这种方法创建的Texture与Surface是一一对应的,由D3D底层自动做了Resolve的过程

   不能使用MultiSample

 

2. 使用Device->CreateRenderTarget()创建一个Surface,用Surface直接设置为RenderTarget

  可以开启Lockable选项,但是效率会非常低

  可以使用MultiSample

   由于没有Texture的关联,这种方法绘制速度理论上会快一些

可以使用Device->StretchRect来将Surface直接拷贝到后备缓冲或者另外一个Surface。不过在DX8和某些DX9的驱动上有一定兼容性问题,具体请参考SDK

 

 

参考:

Render to Surface 

   http://www.borgsoft.de/renderToSurface.html

渲染到纹理(Render To Texture, RTT)详解

   http://www.opengpu.org/bbs/viewthread.php?tid=445

posted on 2010-09-14 15:12 战魂小筑 阅读(4290) 评论(0)  编辑 收藏 引用 所属分类: 渲染 Shader 引擎

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理