D3D可渲染纹理如何快速复制到动态纹理

lvjiantuzhu 2011-01-15 12:11:58
1、我的显卡只有64M显存,我需要按页随数据的增删实时渲染纹理,渲染速度很快能超过100帧,而可渲染纹理只能建立在显存,页太多的话必然会占满显存。
2、所以我希望保存所有渲染结果到系统内存动态纹理,可渲染纹理又不能锁定,所以我试了600*600的纹理,先保存到内存文件时间为0.2秒,再由内存文件创建动态纹理时间为0.016秒,如此实时修改数据帧速率太低,并且一个页更改后,可能后面的页都需要更新,那就更没法想象了!
3、那有没有什么好方法,将渲染后的纹理的数据快速复制给动态纹理?
...全文
242 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellobabyok2008 2011-01-16
  • 打赏
  • 举报
回复
1、IDirect3DDevice9::GetRenderTargetData应该符合你的要求。
2、渲染纹理A表面AS,动态SM纹理B表面BS,普通VM纹理C,要求ABC尺寸与格式一致
3、pDev->GetRenderTargetData(AS, BS);
需要渲染B时
pDev->UpdateTexture(B, C);
使用C渲染……
renxu350 2011-01-15
  • 打赏
  • 举报
回复
LZ为什么要复制纹理呢?
直接用D3D纹理混合(Texture Blending)功能不可以吗,
D3D最多支持8层纹理混合,LZ可以参考这方面的DXSDK
lvjiantuzhu 2011-01-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jameshooo 的回复:]
直接把可渲染纹理当作普通纹理使用,为什么还要复制到另一个动态纹理?
[/Quote]
我开始是这样想的,不过后来考虑我的显存才64M很少,页很多的时候可能会榨干显存,导致出错,基于这样考虑,动态内存建立在系统内存中,那可申请的空间就大得多了。
jameshooo 2011-01-15
  • 打赏
  • 举报
回复
直接把可渲染纹理当作普通纹理使用,为什么还要复制到另一个动态纹理?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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