58 static XrPosef Identity() {
64 static XrPosef Translation(
const XrVector3f& translation) {
65 XrPosef t = Identity();
66 t.position = translation;
70 static XrPosef RotateCCWAboutYAxis(
float radians, XrVector3f translation) {
71 XrPosef t = Identity();
72 t.orientation.x = 0.f;
73 t.orientation.y = std::sin(radians * 0.5f);
74 t.orientation.z = 0.f;
75 t.orientation.w = std::cos(radians * 0.5f);
76 t.position = translation;
102 void updateCamera(
const XrCompositionLayerProjectionView& layerView);
105 void setInitialOffset(
const Vertex<3, fltp08>& offset) { m_initial_offset = offset; }
106 XrInstance xrInstance()
const {
return m_device->xrInstance(); }
107 XrSystemId xrSystemID()
const {
return m_device->xrSystemID(); }
108 XrSwapchain xrSwapChain() {
return m_pipeline->xrSwapChain(); }
112 void setCurrentBlendMode(XrEnvironmentBlendMode blend_mode) { m_pipeline->setCurrentBlendMode(blend_mode); }
114 XrSession xrSession()
const {
return m_pipeline->xrSession(); }
115 virtual XrStructureType GetGraphicsBindingType()
const {
return XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR; }
116 virtual XrStructureType GetSwapchainImageType()
const {
return XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR; }
118 Vertex<3, fltp08> m_initial_offset = Constant<Vertex<3, fltp08>>::Invalid;
119 DynamicPointer<XRVulkanPipeline> m_pipeline;
120 DynamicPointer<Camera> m_reference_camera;
121 DynamicPointer<Camera> m_camera;
122 QTModelManager* m_manager;
124 XrViewConfigurationView m_config_view;
125 DynamicPointer<Renderer> m_renderer;
126 DynamicPointer<VulkanXRDevice> m_device;