CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  游戏开发

请问如何取Direct3D中已加载的Texture的数据

楼主jasonme(杨)2006-06-01 21:23:02 在 专题开发/技术/项目 / 游戏开发 提问

如果是一般的Texture,   我知道可以用LockRect到一个矩形区域里面,把数据取出来,   但问题是如果一个Texture初始设的习属性是D3DUSAGE_RENDERTARGET,   那么它是不可以LockRect的,   这种情况下我怎么能得到这个纹理里面的像素值呢?   谢谢! 问题点数:100、回复次数:6Top

1 楼Analyst()回复于 2006-06-03 00:21:46 得分 0

先创建一块和RenderTarget同样大小同样象素类型的内存surface,然后用IDirect3DDevice9::GetRenderTargetData把RenderTarget复制过来。Top

2 楼Mypiger(深圳 step by step)回复于 2006-06-03 14:42:43 得分 0

D3DLOCKED_RECT   d3dlr;  
  m_pd3dTexture->LockRect(   0,   &d3dlr,   NULL,   0   );  
                    LPWORD   pBits   =   (LPWORD)d3dlr.pBits;                                 //   颜色数据  
  m_pd3dTexture->UnlockRect(   0   );Top

3 楼why54(小坏蛋)回复于 2006-06-04 16:26:18 得分 0

关注Top

4 楼wu_chung_tang(雲遊僧)回复于 2006-06-05 07:45:29 得分 0

不讓lock是因為不讓更改內容   不讓更改copy總歸是可以的   連backbuffer都可以copyTop

5 楼jk20012001(jack)回复于 2006-06-05 10:58:44 得分 0

很多函数都可以做这种复制操作的,比如UpdateSurface、StretchRect、D3DXLoadSurfaceFromSurface等等等等Top

6 楼why54(小坏蛋)回复于 2006-06-05 18:27:53 得分 0

IDirect3DSurface9   *tmp   =   NULL;  
      IDirect3DSurface9   *back   =   NULL;  
   
      //生成固定颜色模式的离屏表面(Width和   Height为屏幕或窗口的宽高)  
      D3D9Device->CreateOffscreenPlainSurface(Width,   Height,   D3DFMT_A8R8G8B8,   D3DPOOL_DEFAULT,   &tmp,   NULL);  
   
      //   获得BackBuffer的D3D   Surface  
      D3D9Device->GetBackBuffer(0,   0,   D3DBACKBUFFER_TYPE_MONO,   &back);  
   
      //   Copy一下,,需要时转换颜色格式  
      D3DXLoadSurfaceFromSurface(tmp,   NULL,   NULL,   back,   NULL,   NULL,   D3DX_FILTER_NONE,   0);  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:jasonme

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo