Direct3D 11 Devices之 Software Layers(软件层)

本文只是对官方文档做出简单的翻译 原文地址:Software Layers

Direct3D 11运行时是分层构造的,从核心的基本功能开始,在外部层中构建可选的功能和开发人员辅助功能。

通常,图层(layers)会添加功能(functionality),但不会修改现有行为。 例如,核心功能(core functions)将具有相同的返回值,而与要实例化的调试层无关,尽管如果实例化调试层,则可能会提供其他调试输出。

要在创建设备时创建图层(layers),请调用D3D11CreateDeviceD3D11CreateDeviceAndSwapChain并提供一个或多个D3D11_CREATE_DEVICE_FLAG值。

核心层(Core Layer)

核心层默认存在。在API和设备驱动程序之间提供映射,从而最大程度地减少了高频调用的开销。由于核心层对于性能至关重要,因此它仅执行关键验证。其余层是可选的。

调试层(Debug Layer)

调试层提供了广泛的附加参数和一致性验证(例如,验证着色器链接和资源绑定,验证参数一致性以及报告错误描述)。

若要创建支持调试层的设备,必须安装DirectX SDK(以获取D3D11SDKLayers.dll),然后在调用D3D11CreateDevice函数或D3D11CreateDeviceAndSwapChain函数时指定D3D11_CREATE_DEVICE_DEBUG标志。如果在启用调试层的情况下运行应用程序,则该应用程序的运行速度将大大降低。但是,要确保在发布应用程序之前清除其错误和警告,请使用调试层。有关更多信息,请参阅Using the debug layer to debug apps

或者,您可以使用DirectX SDK附带的DirectX控制面板启用/禁用调试标志

当调试层列出内存泄漏时,它将输出对象接口指针及其友好名称的列表。 默认的友好名称是“ ”。 您可以使用ID3D11DeviceChild :: SetPrivateData方法和D3Dcommon.h中的WKPDID_D3DDebugObjectName GUID来设置友好名称。

例如,要使用SDKLayer名称为mytexture.jpg来命名pTexture,请使用以下代码:

const char c_szName[] = "mytexture.jpg";
pTexture->SetPrivateData( WKPDID_D3DDebugObjectName, sizeof( c_szName ) - 1, c_szName );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值