在微软的例子中,提供了一种动态创建ID3D11Device接口指针的方法,发在这里,供大家参考.该方法的优势就是可以方便的判定系统中是否支持D3D11,并且针对可能的情况,通过MessageBox的方法,给出了可能的解决方案:

HRESULT WINAPI Dynamic_D3D11CreateDevice( IDXGIAdapter* pAdapter,D3D_DRIVER_TYPE DriverType,HMODULE Software,UINT32 Flags,CONST D3D_FEATURE_LEVEL* pFeatureLevels,UINT FeatureLevels,UINT32 SDKVersion,ID3D11Device** ppDevice,D3D_FEATURE_LEVEL* pFeatureLevel,ID3D11DeviceContext** ppImmediateContext )
{typedef HRESULT (WINAPI * LPD3D11CREATEDEVICE)( IDXGIAdapter*, D3D_DRIVER_TYPE,HMODULE, UINT32, CONST D3D_FEATURE_LEVEL*, UINT, UINT32, ID3D11Device**,D3D_FEATURE_LEVEL*, ID3D11DeviceContext** );static LPD3D11CREATEDEVICE  s_DynamicD3D11CreateDevice = NULL;if ( s_DynamicD3D11CreateDevice == NULL ){           HMODULE hModD3D11 = LoadLibrary( L"d3d11.dll" );if ( hModD3D11 == NULL ){// Ensure this "D3D11 absent" message is shown only once. As sometimes, the app would like to try// to create device multiple timesstatic bool bMessageAlreadyShwon = false;if ( !bMessageAlreadyShwon ){OSVERSIONINFOEX osv;memset( &osv, 0, sizeof(osv) );osv.dwOSVersionInfoSize = sizeof(osv);GetVersionEx( (LPOSVERSIONINFO)&osv );if ( ( osv.dwMajorVersion > 6 )|| ( osv.dwMajorVersion == 6 && osv.dwMinorVersion >= 1 )|| ( osv.dwMajorVersion == 6 && osv.dwMinorVersion == 0 && osv.dwBuildNumber > 6002 ) ){MessageBox( 0, L"Direct3D 11 components were not found.", L"Error", MB_ICONEXCLAMATION );// This should not happen, but is here for completeness as the system could be// corrupted or some future OS version could pull D3D11.DLL for some reason}else if ( osv.dwMajorVersion == 6 && osv.dwMinorVersion == 0 && osv.dwBuildNumber == 6002 ){MessageBox( 0, L"Direct3D 11 components were not found, but are available for"\L" this version of Windows.\n"\L"For details see Microsoft Knowledge Base Article #971644\n"\L"http://support.microsoft.com/default.aspx/kb/971644/", L"Error", MB_ICONEXCLAMATION );}else if ( osv.dwMajorVersion == 6 && osv.dwMinorVersion == 0 ){MessageBox( 0, L"Direct3D 11 components were not found. Please install the latest Service Pack.\n"\L"For details see Microsoft Knowledge Base Article #935791\n"\L" http://support.microsoft.com/default.aspx/kb/935791", L"Error", MB_ICONEXCLAMATION );}else{MessageBox( 0, L"Direct3D 11 is not supported on this OS.", L"Error", MB_ICONEXCLAMATION );}bMessageAlreadyShwon = true;}           return E_FAIL;}s_DynamicD3D11CreateDevice = ( LPD3D11CREATEDEVICE )GetProcAddress( hModD3D11, "D3D11CreateDevice" );          }return s_DynamicD3D11CreateDevice( pAdapter, DriverType, Software, Flags, pFeatureLevels, FeatureLevels, SDKVersion, ppDevice, pFeatureLevel,ppImmediateContext);
}

在使用中使用中利用Dynamic_D3D11CreateDevice方法代替代码中原来的D3D11CreateDevice默认方法即可.

(再次鄙视下这个网易博客的排版系统,RTF文本粘贴居然把格式都丢了,也没有颜色格式了,代码就这样成了黑白......)

D3D11设备接口的动态创建方法相关推荐

  1. Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信

    Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...

  2. 零基础学Python:使用type、metaclass动态创建方法和属性的详细用法

    1.type() 我们知道动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Person的class: class Person(obje ...

  3. 一个实现生产和消费的例子(并且使用了接口和反射技术,动态调用方法)小框架...

    主要实现了插件模式,定义好接口,只要实现了接口,可以动态替换方法,也可以动态增加类等. 具体看源代码:/Files/zhugenqiang/ClassLibrary1.rar 转载于:https:// ...

  4. Linux字符驱动中动态分配设备号与动态生成设备节点

    在编写Linux内核驱动程序的时候,如果不动态生成设备号的话,需要自己手动分配设备号,有可能你分配的设备号会与已有设备号相同而产生冲突.因此推荐自动分配设备号.使用下面的函数: int alloc_c ...

  5. MFC中动态创建控件及添加消息响应的方法实例

    动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一般是对话框, ...

  6. mdev动态创建插入硬件设备

    如何使用busybox精简版本udev程序--mdev动态创建插入的u盘和鼠标等设备 busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平 ...

  7. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  8. MFC中动态创建控件以及事件响应实现方法

    本文实例讲述了MFC中动态创建控件以及事件响应实现方法,分享给大家供大家参考.具体实现方法如下: 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态 ...

  9. python 动态_python实现动态创建类的方法分析

    本文实例讲述了python实现动态创建类的方法.分享给大家供大家参考,具体如下: python作为动态语言,如何在运行时动态创建类呢(python Creating classes dynamical ...

最新文章

  1. Thread.sleep(0):线程休眠0秒有什么意义!
  2. c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用
  3. 解决远程登陆Linux误按ctrl+s锁屏
  4. Android应用截图嵌入到真实设备
  5. 安装svn和安装svn汉化语言包
  6. QNX系统配置NFS实战
  7. 苹果CEO乔布斯鲜为人知的15个小秘密
  8. [含lw+源码等]S2SH+mysql的报刊订阅系统[包运行成功]Java毕业设计计算机毕设
  9. Frequent Subsets Problem
  10. 信息系统项目管理师计算题(期望值)
  11. 红米k30支持html,红米K30S至尊纪念版发布:骁龙865+支持144Hz高刷
  12. 造轮子之后台管理模板
  13. NetLogon特权提升漏洞(CVE-2020-1472)复现及问题解决
  14. icloud备份微信聊天记录怎么恢复
  15. 微信小程序版本更新后提示用户更新
  16. 小白使用backtrack5
  17. Java 代码精简之道 侵删
  18. 说说background-size:cover;与background-size:contain的区别
  19. 我国劳动法中关于高校应届毕业生就业协议及合同的一切条款
  20. 微软面试题:打印折纸的折痕

热门文章

  1. 算法高手再度集结 通关秘籍拿走不谢
  2. 《小强升职记》 读书笔记
  3. 读书笔记 - 实现领域驱动设计
  4. java代码优化六大原则
  5. 关于新版高校体育登录请求加密方法的逆向和再破解
  6. 组合导航(四):惯性导航系统
  7. SCADA 总体设计(二)
  8. 【 ICLR 2022】MoleR: Learning to Extend Molecular Scaffolds with Structural Motifs
  9. 微信公众号支付 流程
  10. 质量管理体系之测试用例