ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于D3D资源的创建

2019-07-27 22:36:51  阅读:267  来源: 互联网

标签:Resource 创建 D3DPOOL D3DUSAGE Memory GPU D3D 资源


原文链接:http://www.cnblogs.com/cxrs/archive/2013/04/03/D3DResourceManager.html

1 Resource的创建与存放。 

    如何创建3D资源对3D应用的性能影响比较大,因此3D应用开发者最好对这部分深入了解,以便配合D3D Runtime和Display Driver把不同类型、不同用途的Resource创建在最合适的地方。

     在创建D3D资源时,可以存放到三种类型的Memory:System Memory,AGP Memory, Video Memory.

  • System Memory:就是系统内存,存放在System Memory上的Resource是不能直接被GPU访问的,对于GPU来说是不可见的,这种Resource必须经过拷贝才能运用到GPU的渲染中。
  • AGP Memory:  也叫Share System Memory或者Non-Local  Video Memory, 其实就是系统内存的一部分,只是这部分内存已经被Mapping为显存的一部分,不但CPU可以访问这部分内存,而且GPU也可以通过PCI-E/AGP总线透明访问这部分内存,就像显存一样,但GPU访问速度比显存慢,毕竟经过映射,而且还要走PCI-E总线进行读写。
  • Video Memory: 显存,也叫做Local Video Memory, 只有GPU可以访问,CPU不可见也不能访问,速度最快。

      对于3D应用来说,资源创建在哪里并没有完全的决定权,最终决定权在D3DRuntime和显卡驱动,以及VideoMemoryManager的策略,但是3D应用可以通过在创建资源时设置一些Flags,以便使Runtime和Driver更加正确有效的管理资源。其中有两个Flags最为关键,D3DPOOL和D3DUSAGE,两者必须配合使用。

 下图为独立显卡的存储架构:

 

 下图为集成显卡的存储架构:

 

 

2 D3DPOOL

     D3DPOOL包括D3DPOOL_DEFAULT、D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM、D3DPOOL_SCRATCH。

  • D3DPOOL_DEFAULT:一般存放在video memory或AGP memory中。由于在系统内存中没有备份,在Device Lost时需要释放后重新创建。
  • D3DPOOL_MANAGED:和D3DPOOL_DEFAULT的区别在于D3DRuntime会在System Memory中为其创建备份,Device Lost后不需要处理,D3DRuntime会自动用备份通过显卡驱动重新创建出资源。
  • D3DPOOL_SYSTEMMEM只存放于系统内存中,这种资源不能被GPU访问,Device Lost后不需要处理。

      在创建Resource时,对指定 D3DPOOL时有些限制,比如创建RenderTarget和DepthStencil只能标志为D3DPOOL_DEFAULT,被指定为dynamic的resource只能标志为D3DPOOL_DEFAULT或D3DPOOL_SYSTEMMEM,详细可参考D3D SDK 文档。

3,    D3DUSAGE

D3DUSAGE用于标志D3D Resource的用途,下表为D3DUSAGE和各种资源的组合。X代表此Usage可用于某Resource的创建。

Usage

Vertex buffer create

Index buffer create

Texture create

Cube texture create

Volume texture create

Surface create

Check device format

D3DUSAGE_AUTOGENMIPMAP

   

x

x

   

x

D3DUSAGE_DEPTHSTENCIL

   

x

x

 

x

x

D3DUSAGE_DMAP

   

x

     

x

D3DUSAGE_DONOTCLIP

x

x

         

D3DUSAGE_DYNAMIC

x

x

x

x

x

 

x

D3DUSAGE_NONSECURE

x

x

x

x

x

x

x

D3DUSAGE_NPATCHES

x

x

         

D3DUSAGE_POINTS

x

x

         

D3DUSAGE_RTPATCHES

x

x

         

D3DUSAGE_RENDERTARGET

   

x

x

 

x

x

D3DUSAGE_SOFTWAREPROCESSING

x

x

x

x

x

 

x

D3DUSAGE_TEXTAPI

x

 

x

       

D3DUSAGE_WRITEONLY

x

x

         

        

转载于:https://www.cnblogs.com/cxrs/archive/2013/04/03/D3DResourceManager.html

标签:Resource,创建,D3DPOOL,D3DUSAGE,Memory,GPU,D3D,资源
来源: https://blog.csdn.net/weixin_30376323/article/details/97564782

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有