Does OpenXR works for NVIDIA OptiX?

This is my first post in KHRONOS discussion. From OpenXR Specification page, I found the OpenXR is API specific, and only works for Vulkan, DX11/12, OpenGL, OpenGLES. Am I right?

However, I am trying to develop my own real-time rendering (raytracing) engine with NVIDIA OptiX API, and want to work for my Vive Pro Eye Headset. I googled how to use OpenXR for my purpose, but I ended up with nothing. Is there any way I can use OpenXR with OptiX? Is there any other solution for OptiX?

OptiX only produces images but leaves presentation of those to the application. In other words a typical OptiX application that displays on a monitor will have a small amount of D3D, OpenGL, or Vulkan code to handle presenting the images.
Similar steps should allow you present to an HMD. In the worst case I would expect that this might require an additional GPU memory copy from the image OptiX has rendered to the swapchain image.

I am not sure about D3D or Vulkan use in OptiX, probably not (don’t believe me, I am totally new in this field), but I found, OptiX examples used GLFW for visualizing the rendered scene. So, are you suggesting, e.g., after rendered the scene by OptiX I use any other API, eg., OpenGL to visualize it on VR display with OpenXR?


I think the requirements for the API are that there is CUDA interop support (for efficient use of images/textures from the API and OptiX) and that it can be used with OpenXR.

From a quick look at the CUDA documentation that suggests D3D 11 and OpenGL meet both requirements.

1 Like

I am not sure how to do that, but probably D3D11 won’t serve my purpose, as it cannot handle ray-tracing. OpenGL might help. Thanks a lot for your suggestions.

Sorry, I’m not sure I follow. You are not sure how to do what?

Neither D3D11 nor OpenGL expose direct support for raytracing, but my understanding was that you wanted to use OptiX for that? For the interop stuff you can look at the code of existing OptiX examples, e.g. for OptiX 7.x or older OptiX.

Actually, I found OptiX already has a built in OpenGL interop. Hope it will work.