Код: Выделить всё
auto vulkanImage = ...;
auto memoryRequirements = device.getImageMemoryRequirements(vulkanImage);
vk::ExportMemoryAllocateInfo exportInfo{
.handleTypes = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueWin32
};
vulkanImageMemory = device.allocateMemory({
.pNext = &exportInfo,
.allocationSize = memoryRequirements.size,
.memoryTypeIndex = findMemoryType(physicalDevice, memoryRequirements.memoryTypeBits, vk::MemoryPropertyFlagBits::eDeviceLocal),
});
device.bindImageMemory(vulkanImage, vulkanImageMemory, 0);
< /code>
Попытка получить ручку, однако не удалось с нарушением доступа, пытаясь обогнать нулевой указатель: < /p>
auto hTextureMem = (HANDLE)device.getMemoryWin32HandleKHR({
.memory = vulkanImageMemory,
.handleType = vk::ExternalMemoryHandleTypeFlagBits::eOpaqueWin32
});
[*] Внутренний vkgetmemorywin32handlekhr Указатель, что Device.getMemorywin32handlekhr вызовы указывают на действительную память, которая не является источником нарушения доступа. На самом деле нарушение происходит внутри этой функции в соответствии с кадром стека.
[*]
Код: Выделить всё
pNextТип HARDE, который выглядный тип HARDEDSED (HOWER WIN WIN WIN). /> Предположим, что последние драйверы NVIDIA и 5070 TI на Win11, а также новейшие Vulkan SDK, так что речь идет не о пропущенных расширениях или функциональности. Я, должно быть, где -то делаю что -то не так. Я не верю, что что -то еще актуально, но вы никогда не знаете.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ll-address
Мобильная версия