官方DirectX标头在开放源代码许可下可用

2020-12-29 10:04:47

此存储库托管官方Direct3D 12标头。这些标头是根据MIT许可而不是传统的Windows SDK许可提供的。

/:可在此处使用构建文件进行快速集成。提供了CMake,可以通过subdirectory()或在安装到系统位置后进行引用。介子也可以作为子项目/包装包含在内。

/ include / directx:这些文件是使用D3D12的核心头文件,外加d3dx12.h,它是一个帮助程序,不会跨越D​​3D12 API的边界。

/ include / wsl:这些文件是作为补充文件提供的,能够包括来自Linux构建环境的D3D12头文件,而无需其余Windows SDK。

/ include / dxguids:此标头允许应用程序在Windows和WSL之间一致地使用uuidof< T>(),而不是__uuidof()。

/src/dxguids.cpp:此cpp文件可以用作Windows上针对dxguid.lib的链接的替换,并且可以用作方便的转换单元来定义GUID,而无需为WSL定义多个。

/ test:用于验证标头的简单CMake / Meson项目可以包含在给定的环境中

请注意,这些标头可能与Windows SDK中的标头发生冲突,具体取决于包含顺序。这些标头应在SDK之前添加到包含目录列表中,并且应在Windows SDK中的其他图形标头(例如d3d11.h)之前添加。否则,可能会首先包含Windows SDK中的相应标头,并且将定义防止这些标头被使用的包含保护。

注意:WSL支持不旨在用于通用应用程序开发。目前,唯一推荐的用法是希望为WSL2虚拟化环境中的Linux图形/计算API提供硬件加速的框架。

/ include / wsl目录中的标题为Windows SDK中通常提供的宏和typedef提供了替代定义。在大多数情况下,它们应该简单明了,但需要注意以下几点:

在64位Windows上,long是4个字节,但是在Linux上,通常是8个字节。用于WSL的D3D12 ABI使用的时间很长,因此这些应该是8个字节。

在Windows上,wchar_t是2个字节,但是在Linux上,通常是4个字节。用于WSL的D3D12 ABI使用本机4字节wchar_t,以使应用程序和运行时能够使用系统C库执行字符串处理。

另外,采用Win32类型的HANDLE(void *)的API应该改用reinterpret_cast< HANDLE>(fd)作为适当类型的文件描述符。对于ID3D12Fence :: SetEventOnCompletion,应为eventfd,对于共享资源,应为不透明fd。

CMake子项目:将整个项目添加为较大项目的子目录,例如作为git子模块,并将add_subdirectory放入其中。使用生成的DirectX-Headers和/或DirectX-Guids目标作为链接依赖项

已安装的CMake:构建/安装此项目后,可以通过CMake的find_package功能找到该项目,并将公开相同的DirectX-Headers和DirectX-Guids目标。

介子子项目/包装:将整个项目添加为较大项目的子项目,并使用子项目或依赖项来使用它。

Pkg-config:使用Meson构建此项目,可以通过pkg-config找到生成的安装包。

该项目欢迎您的贡献和建议。大多数捐款要求您同意“捐款者许可协议”(CLA),声明您有权并实际上授予我们使用您的捐款的权利。有关详细信息,请访问https://cla.opensource.microsoft.com。

当您提交拉取请求时,CLA机器人会自动确定您是否需要提供CLA并适当地装饰PR(例如,状态检查,评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的CLA在所有存储库中执行一次即可。

该项目采用了Microsoft开源行为准则。有关更多信息,请参见《行为准则》常见问题解答,或与[email protected]联系,并提出其他任何问题或意见。

该项目可能包含项目,产品或服务的商标或徽标。授权使用Microsoft商标或徽标必须遵守Microsoft商标和徽标,并且必须遵循该商标和徽标。品牌准则。在此项目的修改版本中使用Microsoft商标或徽标不得引起混淆或暗示Microsoft赞助。任何使用第三方商标或徽标的行为均应遵守这些第三方的政策。