| 238 | } |
| 239 | |
| 240 | bool TextureVk::CreateSharedTextureGL(unsigned int* outName) |
| 241 | { |
| 242 | VK_DEVICE_FUNCTION(m_device, vkGetMemoryWin32HandleKHR); |
| 243 | |
| 244 | VkMemoryGetWin32HandleInfoKHR handleInfo = { VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR }; |
| 245 | handleInfo.memory = m_memory; |
| 246 | handleInfo.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR; |
| 247 | VkResult result = vkGetMemoryWin32HandleKHR(m_device, &handleInfo, &m_hMemoryHandle); |
| 248 | if (result != VK_SUCCESS) |
| 249 | return false; |
| 250 | |
| 251 | VkMemoryRequirements memReqs; |
| 252 | vkGetImageMemoryRequirements(m_device, m_image, &memReqs); |
| 253 | |
| 254 | glCreateTextures(GL_TEXTURE_2D, 1, outName); |
| 255 | glCreateMemoryObjectsEXT(1, &m_MemoryObject); |
| 256 | glImportMemoryWin32HandleEXT(m_MemoryObject, memReqs.size, GL_HANDLE_TYPE_OPAQUE_WIN32_EXT, m_hMemoryHandle); |
| 257 | glTextureStorageMem2DEXT(*outName, 1, GL_RGBA8, m_data.m_nWidth, m_data.m_nHeight, m_MemoryObject, 0); |
| 258 | return true; |
| 259 | } |
| 260 | |
| 261 | void TextureVk::DeleteSharedTextureGL(unsigned int name) |
| 262 | { |