# d3d11_vulkan_sharing **Repository Path**: tisandman/d3d11_vulkan_sharing ## Basic Information - **Project Name**: d3d11_vulkan_sharing - **Description**: 验证vulkan vkImage和d3d11 texture2D共享frame buffer资源的方法 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-11-21 - **Last Updated**: 2024-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # d3d11_vulkan_sharing #### 介绍 验证vulkan vkImage和d3d11 texture2D共享资源的方法 #### 软件架构 代码基于vulkan tutorial例程Combined image sampler修改 用cmake生成并编译VS2019项目,代码用于演示D3d11和vulkan共享资源 需要Windows10,VisualStudio,Vulkan和GLFW sdk #### 安装教程 按照Vulkan Tutorial的教程配置 [vulkan开发环境](http:///vulkan-tutorial.com/Development_environment) 1. 从 https://vulkan.lunarg.com/ 下载安装Vulkan SDK 2. 从 https://www.glfw.org/ 下载GLFW SDK 3. 从https://github.com/g-truc/glm/releases下载GLM库 #### 使用说明 1. 修改源码里的用于贴图的图片和2个shader文件的路径,指向本地文件所在的路径 ``` auto vertShaderCode = readFile("C:/work/vulkan/26_texture_mapping/26_shader_textures.vert.spv"); auto fragShaderCode = readFile("C:/work/vulkan/26_texture_mapping/26_shader_textures.frag.spv"); stbi_uc* pixels = stbi_load("C:/work/vulkan/26_texture_mapping/texture.jpg", &texWidth, &texHeight, &texChannels, STBI_rgb_alpha); ``` 2. 修改CMakeLists.txt里GLM和GLFW库的路径,以便cmake可以正确找到本地这2个库的位置 ``` list(APPEND CMAKE_PREFIX_PATH "C:\\temp\\glfw-test") list(APPEND CMAKE_PREFIX_PATH "C:\\temp\\glm-0.9.9.8\\glm\\cmake") ``` 3. 打开VS的x64 Native Tools Command Prompt for VS 2019窗口 4. 进入代码的目录,输入 ``` mkdir build cd build cmake -G "Visual Studio 16 2019" -A x64 .. cmake --build . --config Release ``` 5. 代码里有个编译参数 ``` #define USE_KEYEDMUTEX ``` 分别对应创建D3D11 texture2D时候的MiscFlags包含D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX或者D3D11_RESOURCE_MISC_SHARED的情况 6. 已知问题 如果在vulkan初始化的时候打开了Vulkan validation layer, 那么在后面调用获取vkImage所需存放像素的buffer大小 vkGetImageMemoryRequirements2()的时候就会出现memory access violation的错误。 具体原因待查。 #### 参与贡献 1. 主程序来自Vulkan Tutorial教程 https://vulkan-tutorial.com/Texture_mapping/Combined_image_sampler 2. D3D11和vulkan交互的代码流程参考自 https://github.com/roman380/VulkanSdkDemos/blob/d3d11-image-interop/BindImageMemory2/BindImageMemory2.cpp #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)