Skip to content

Archive

Archive for October, 2015
Universal DX SDK的第二阶段也完成了。新加了一个批处理文件,用于从系统的.dll生成.lib或者.a。 这个脚本支持vc7-vc14,以及mingw。只要装了这些中的任意一个,执行脚本的时候,它就会从System32或SysWOW64中挑选需要的dll,从中生成vc所有用的导入库lib,或者mingw所用的导入库.a,放到Lib下。如此一来,非动态载入的情况也可以使用Universal DX SDK。 目前我的实验是,在KlayGE里用Universal DX SDK,在VS2013下开发D3D12的东西,包括桌面应用和WinRT应用。目前为止一切正常,程序可以编译链接运行。
前两天刚宣布了一个新的开源项目,Universal DX SDK,现在以完成了第一阶段。 在现在的master分支里,头文件已经被更新到Win10 SDK 10.0.10240.0,并作出一些修改: 注掉了winapifamily.h相关的代码,以适用于VS2010及以前的vc,和MinGW/Clang。 在MinGW下编译不会出现warning。 这么一来,如果用LoadLibrary进行动态载入,只需要头文件的话,在各种编译器下都能使用Universal DX SDK,支持D3D 9-12、DXGI 1.1-1.4、DInput、DSound、D2D 1.1-1.3、DWrite 1.1-1.3、XAudio等,并支持古老的XNAMath、D3DX 9-11等。基本可以满足各种对DX的需求。 经过KlayGE的实验,用了Universal DX SDK之后,大部分根据SDK版本进行的#ifdef都可 ...
从Windows 8开始,DirectX SDK就被合并到Windows SDK里了。June 2010成了最后一次独立发布的DX SDK。大部分情况下,这么做挺方便,VS装好之后就能用了,不再需要单独装DX SDK、设置路径等。但有的时候,这样也会带来些麻烦。 用Windows SDK的不便之处 Visual Studio的用户基本上都使用VS自带的Windows SDK,很少有单独装的。这带来的问题就是,如果VS不升级,SDK就不升级,两者变成一对一的关系了。所以如果你想用VS2012开发D3D11.2,或者VS2013开发D3D12的东西,就没法弄。 另一方面,在Windows上也可以用MinGW和Clang来编译。但它们所带的DX SDK比较古老,而且不全。用June 2010的话,因为sal的关系,编译中会有很多错误。即便绕开了 ...
经过前面的练习,实现query已经没什么难的了。 Query heap 在D3D12里,query也是放在heap中。但和其他heap不同的是,query heap与其说是heap,不如说是array。它并不需要设置给设备,而是相当于一次可以提交多个query。Query heap的数量不限,所以为了简单实现,可以给每个query建立一个query heap。 D3D12_QUERY_HEAP_DESC query_heap_desc; query_heap_desc.Type = D3D12_QUERY_HEAP_TYPE_OCCLUSION; query_heap_desc.Count = 1; query_heap_desc.NodeMask = 0; ID3D12QueryHeap* query_heap; TIF(device->CreateQueryHeap(&query_heap_desc, IID_ID3D12QueryHeap, reinterpret_cast<void**>(&query_heap))); ...