首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ovr_CreateTextureSwapChainVk崩溃

ovr_CreateTextureSwapChainVk崩溃
EN

Stack Overflow用户
提问于 2020-05-10 00:15:06
回答 1查看 89关注 0票数 1

我正在尝试使用Vulkan和OVR创建一个VR应用程序。

以下是主要步骤:

  • 初始化OVR

代码语言:javascript
复制
ovrInitParams initParams = { ovrInit_RequestVersion | ovrInit_FocusAware, OVR_MINOR_VERSION, NULL, 0, 0 };
ovrResult result = ovr_Initialize(&initParams);
if (!OVR_SUCCESS(result))
{
    Debug::sendError("Failed to initialize OVR");
    return;
}

result = ovr_Create(&m_session, &m_luid);
if (!OVR_SUCCESS(result))
{
    Debug::sendError("Failed to create OVR");
    return;
}

  • Pick vkPhysicalDevice

代码语言:javascript
复制
ovr_GetSessionPhysicalDeviceVk(m_session, m_luid, m_instance, &m_physicalDevice);

  • 创建交换链

代码语言:javascript
复制
ovrTextureSwapChainDesc colorDesc = {};
colorDesc.Type = ovrTexture_2D;
colorDesc.ArraySize = 1;
colorDesc.Format = OVR_FORMAT_B8G8R8A8_UNORM_SRGB;
colorDesc.Width = 1280;
colorDesc.Height = 720;
colorDesc.MipLevels = 1;
colorDesc.SampleCount = 1;
colorDesc.MiscFlags = ovrTextureMisc_DX_Typeless;
colorDesc.BindFlags = ovrTextureBind_DX_RenderTarget;
colorDesc.StaticImage = ovrFalse;
ovrResult result = ovr_CreateTextureSwapChainVk(m_session, device, &colorDesc, &m_textureChain);
if (!OVR_SUCCESS(result))
{
    ovrErrorInfo errorInfo;
    ovr_GetLastErrorInfo(&errorInfo);
    Debug::sendError("Failed to create swapchain OVR");
    return;
}

问题是程序在调用ovr_CreateTextureSwapChainVk时崩溃。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 02:31:31

这个问题是由于设备扩展造成的。以下是使用OVR的正确扩展:

{ VK_KHR_SWAPCHAIN_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME, "VK_KHR_external_memory_win32", VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME, "VK_KHR_external_semaphore_win32", VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME };

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61705539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档