Direct3D 11 Devices 之 Using Direct3D 11 feature data to supplement Direct3D feature levels
本文只是对官方文档做出简单的翻译 原文地址:Using Direct3D 11 feature data to supplement Direct3D feature levels
了解如何检查设备对可选功能的支持,包括在Windows的最新版本中添加的功能。
Direct3D feature levels 指示定义良好的GPU功能集,这些功能大致对应于不同世代的图形硬件。这极大地简化了检查硬件功能的任务,并且还为各种不同的设备提供了一致的体验。
为了解决不同硬件实现之间的某些差异(包括旧版硬件,移动硬件和现代硬件),某些功能被认为是可选的。可以通过调用ID3D11Device::CheckFeatureSupport 并提供相关的D3D11_FEATURE_DATA_ 结构来确定对这些功能的支持。本主题描述了Direct3D 11的各种可选功能,其中一些功能如何协同工作以及如何避免检查每个可选功能。
如何检查可选功能支持
调用ID3D11Device::CheckFeatureSupport,提供表示您要使用的可选功能的结构。如果该方法返回S_OK,则意味着您使用的是Direct3D运行时的版本,该版本支持可选功能。如果返回E_INVALIDARG,则表示您使用的是Direct3D 11运行时的版本,而不是添加可选功能之前的版本-这表示该可选功能不可用,以及同一版本的Direct3D 11或其他引入的其他可选功能也不可用
我可以最小化功能支持检查所需的工作吗?
除了具有正确的Direct3D 11运行时(通常与Windows版本关联)之外,图形驱动程序还必须足够新以支持可选功能。如果硬件能够支持WDDM规范,则需要支持其可选功能。因此,当图形驱动程序支持在特定版本的Windows中添加的可选功能之一时,通常意味着图形驱动程序支持在该版本的Windows中添加的其他功能。例如,如果设备驱动程序支持功能级别9上的阴影,则您知道该设备驱动程序至少为WDDM 1.2。
注意如果Microsoft Direct3D设备支持feature level 11.1,则SAD4ShaderInstructions 和 ExtendedDoublesShaderInstructions会自动支持 D3D11_FEATURE_DATA_D3D11_OPTIONS指示的所有可选功能。
运行时始终将以下成员分组设置相同。也就是说,分组中的所有值一起为TRUE 或 FALSE:
- 丢弃APISeenByDriver和FlagsForUpdateAndCopySeenByDriver
- ClearView,CopyWithOverlap,ConstantBufferPartialUpdate,ConstantBufferOffsetting和MapNoOverwriteOnDynamicConstantBuffer
- MapNoOverwriteOnDynamicBufferSRV和MultisampleRTVWithForcedSampleCountOne
feature level 11.2选项(D3D11_FEATURE_D3D11_OPTIONS1):此字段指示的可选功能是独立的,必须单独检查。
Windows RT 8.1和Windows Phone 8.1设备上的功能支持
Windows RT平板设备可以支持各种功能级别和可选功能,经过优化以降低功耗,并使用集成的图形而不是独立的GPU。用于ARM设备的Windows应用商店应用必须支持feature level 9.1。适用于Windows RT的DirectX应用程序应利用可选功能,这些功能可在可用时节省电源和周期(例如,简单的实例化)。
Windows Phone 8移动设备支持具有特定可选功能的feature level 9.3。请参阅Direct3D feature level 9_3 for Windows Phone 8。
Direct3D 11的可选功能是什么?
本文的其余部分描述了Direct3D 11.2中可用的可选功能。按添加的时间顺序排列功能,以便您了解Direct3D 11的不同版本中的功能。
功能级别10的可选计算着色器支持
以下功能始终可用于feature level 10的设备:
D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS: 如果为TRUE,则设备支持计算着色器。这包括对原始和结构化缓冲区的支持。
当feature level 10_0或10_1设备支持此功能时,不能保证该设备支持计算着色器4.1。如果 ID3D11Device::CreateComputeShader 引发计算着色器4.1程序异常,则应用应准备好使用计算着色器4.0。
功能级别9的可选功能
从Windows 8开始,为feature level 9添加了以下功能:
D3D11_FEATURE_DATA_D3D9_OPTIONS: 表示支持非2次幂纹理的环绕纹理寻址。如果支持此功能,则可以将D3D11_TEXTURE_ADDRESS_MODE_WRAP与此类纹理一起使用。
D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT: 表示支持着色器模型4.0功能级别9_x着色器中的比较采样器。它用于像素着色器中的深度测试,从而支持常见技术,例如阴影贴图和模板。
从Windows 8.1开始为feature level 9的设备添加了以下功能:
D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT: 表示支持可能在DirectX 9级硬件上可用的简单实例化功能。 简单实例化意味着用于定义输入布局的 D3D11_INPUT_ELEMENT_DESC结构的所有InstanceDataStepRate成员必须等于1。支持功能级别9.3或更高版本的设备已经包含了对实例化的完全支持。
着色器程序的可选浮点精度支持
D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT: 启用最小精度时,此结构中的字段指示浮点数的长度;如果仅支持完整的32位浮点精度,则为0。
对于feature level 9的设备,顶点着色器的最低精度可能不同于像素着色器。顶点着色器的精度在AllOtherShaderStagesMinPrecision字段中指示。
D3D11_FEATURE_DATA_DOUBLES: feature level 11的设备可以在shader model 5.0程序中支持双精度计算。在着色器中支持双精度计算意味着可以在计算着色器程序中将浮点数转换为双精度,从而提供了每次着色器遍次中更高精度计算的好处。在将双精度数字写入输出缓冲区之前,必须将其转换回浮点数。注意,不一定支持双精度除法。
Direct3D 11.2的附加功能
Direct3D 11.2添加了Direct3D 11设备可以支持的四个新的可选功能。这些功能位于D3D11_FEATURE_DATA_D3D11_OPTIONS1 结构中:
TiledResourcesTier:指示对切片资源的支持,并指示支持的层级别。
MinMaxFiltering:表示支持D3D11_FILTER_MINIMUM_ *和D3D11_FILTER_MAXIMUM_ *过滤选项,这些选项将过滤结果与最小值(或最大值)进行比较。请参阅 D3D11_FILTER.
ClearViewAlsoSupportsDepthOnlyFormats:表示支持清除深度缓冲区资源视图。
MapOnDefaultBuffers:表示支持映射使用D3D11_USAGE_DEFAULT标志创建的渲染目标缓冲区。
基于图块的渲染
D3D11_FEATURE_DATA_ARCHITECTURE_INFO: 指示图形设备是否批处理渲染命令,并默认执行基于图块的渲染。这可以用作图形引擎优化的提示。
开发和调试的可选功能
D3D11_FEATURE_DATA_D3D11_OPTIONS :: DiscardAPIsSeenByDriver:您可以在开发过程中监视此成员,以排除硬件驱动程序上的旧驱动程序,否则,DiscardView 和 DiscardResource可能会有所帮助。
D3D11_FEATURE_DATA_MARKER_SUPPORT: 如果硬件和驱动程序支持GPU配置文件的数据标记,则支持此功能。
Direct3D 11 Devices 之 Using Direct3D 11 feature data to supplement Direct3D feature levels相关推荐
- Direct3D 11 Devices
Direct3D Device分配和销毁对象,渲染图元并与图形驱动程序和硬件进行通信. 在Direct3D 11中,设备分为用于创建资源的设备对象和执行渲染的设备上下文对象(device-contex ...
- C++11 并发指南一(C++11 多线程初探)
引言 C++11 自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些 C++11 的新特性,今后几篇博客我都会写一些关于 C++11 的特性,算是记录一下自己学到的东西吧, ...
- Could not load dynamic library ‘libcusolver.so.11‘; dlerror: libcusolver.so.11: cannot open shared o
Could not load dynamic library 'libcusolver.so.11'; dlerror: libcusolver.so.11: cannot open shared o ...
- android ndk 编译c++11,Android NDK的C++11标准支持
C++11在Android NDK中已经支持了,本文主要介绍如何在NDK中添加C++11标准的支持.android 在开源项目Cocos2d-x中,已经添加了C++11标准的支持.c++ 1.修改Ap ...
- 【C++11新特性】 C++11智能指针之weak_ptr
http://blog.csdn.net/xiejingfa/article/details/50772571 原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/ar ...
- c++11新特性_【C++11新特性】 C++11智能指针之weak_ptr
如题,我们今天要讲的是 C++11 引入的三种智能指针中的:weak_ptr. 在学习 weak_ptr 之前最好对 shared_ptr 有所了解.如果你还不知道 shared_ptr 是何物,可以 ...
- 11月1日至11日 全国处理快件47.76亿件
11月12日消息,据国家邮政局监测数据显示,11月1日-11日,全国邮政.快递企业共处理快件47.76亿件,同比增长超过两成.其中,11月11日当天共处理快件6.96亿件,稳中有升,再创历史新高. 据 ...
- HALCON 20.11:深度学习笔记(11)---目标检测
HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...
- android10和11,安卓10与安卓11究竟差异在哪里?我们拿这两台新机试了一下
原标题:安卓10与安卓11究竟差异在哪里?我们拿这两台新机试了一下 9 月 24 日,OPPO 带着全新的 ColorOS 11 与我们正式见面,这一基于安卓 11 底层深度打造的新系统给我们带来了不 ...
- 2014年双11抢货宝典-双11促销商品价格对比清单---妈妈再也不用担心我成为剁手党啦
2014年双11抢货宝典-双11促销商品价格对比清新鲜出炉,双十一当天使用抢货的宝典. 列出了20多万商品所有双十一货品的平时价格和双十一当天价格, 本次电商响应国家工商总局不得先提价后降价的要求,件 ...
最新文章
- 【Qt】QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE
- [转]使用jQuery.ajax傳送物件陣列給ASP.NET MVC
- tdd 单元测试_何时给定在单元测试和TDD中的重要性
- 融资 6 亿元后,端点科技将致力于类SaaS化软件服务
- Python 多线程爬取西刺代理
- rabbitmq基于http的认证和授权
- 内外网切换软件_不需要软件,用命令简单实现内外网切换指定网段走哪条线路...
- Linux下编写简单的程序
- 【MySQL】java应用开发与实践读书笔记
- fluidsim win7版本_FluidSIM 5|FluidSIM(液压气动仿真软件)下载v5.0中文免费版 附安装教程 - 欧普软件下载...
- 推荐4个爬虫抓包神器
- 西游记中的第一神器是什么?
- android开发 重启app
- TB-RK3399Pro 找不到网络图标,如何连wifi呢?
- (转贴) 亦卷亦舒
- 青书堂电子商务概论的学习总结
- 【USB笔记】USB 2.0 帧开始包Start-of-Frame Packets
- 手机端GSP地图的定位 并且在网页上显示地图的轨迹
- Windows与网络基础:NTFS权限规则和本地安全策略
- Windows快捷键 - 最大化 最小化 还原