Changeset View
Changeset View
Standalone View
Standalone View
intern/ghost/intern/GHOST_XrSession.cpp
| Show First 20 Lines • Show All 364 Lines • ▼ Show 20 Lines | static void ghost_xr_draw_view_info_from_view(const XrView &view, GHOST_XrDrawViewInfo &r_info) | ||||
| r_info.fov.angle_up = view.fov.angleUp; | r_info.fov.angle_up = view.fov.angleUp; | ||||
| r_info.fov.angle_down = view.fov.angleDown; | r_info.fov.angle_down = view.fov.angleDown; | ||||
| } | } | ||||
| void GHOST_XrSession::drawView(GHOST_XrSwapchain &swapchain, | void GHOST_XrSession::drawView(GHOST_XrSwapchain &swapchain, | ||||
| XrCompositionLayerProjectionView &r_proj_layer_view, | XrCompositionLayerProjectionView &r_proj_layer_view, | ||||
| XrSpaceLocation &view_location, | XrSpaceLocation &view_location, | ||||
| XrView &view, | XrView &view, | ||||
| uint32_t view_idx, | |||||
| void *draw_customdata) | void *draw_customdata) | ||||
| { | { | ||||
| XrSwapchainImageBaseHeader *swapchain_image = swapchain.acquireDrawableSwapchainImage(); | XrSwapchainImageBaseHeader *swapchain_image = swapchain.acquireDrawableSwapchainImage(); | ||||
| GHOST_XrDrawViewInfo draw_view_info = {}; | GHOST_XrDrawViewInfo draw_view_info = {}; | ||||
| r_proj_layer_view.type = XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW; | r_proj_layer_view.type = XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW; | ||||
| r_proj_layer_view.pose = view.pose; | r_proj_layer_view.pose = view.pose; | ||||
| r_proj_layer_view.fov = view.fov; | r_proj_layer_view.fov = view.fov; | ||||
| swapchain.updateCompositionLayerProjectViewSubImage(r_proj_layer_view.subImage); | swapchain.updateCompositionLayerProjectViewSubImage(r_proj_layer_view.subImage); | ||||
| draw_view_info.view_idx = (char)view_idx; | |||||
Severin: Better to `assert(view_idx < 256)` here. | |||||
muxed-realityAuthorUnsubmitted Done Inline ActionsAdded assertion. muxed-reality: Added assertion. | |||||
| draw_view_info.expects_srgb_buffer = swapchain.isBufferSRGB(); | draw_view_info.expects_srgb_buffer = swapchain.isBufferSRGB(); | ||||
| draw_view_info.ofsx = r_proj_layer_view.subImage.imageRect.offset.x; | draw_view_info.ofsx = r_proj_layer_view.subImage.imageRect.offset.x; | ||||
| draw_view_info.ofsy = r_proj_layer_view.subImage.imageRect.offset.y; | draw_view_info.ofsy = r_proj_layer_view.subImage.imageRect.offset.y; | ||||
| draw_view_info.width = r_proj_layer_view.subImage.imageRect.extent.width; | draw_view_info.width = r_proj_layer_view.subImage.imageRect.extent.width; | ||||
| draw_view_info.height = r_proj_layer_view.subImage.imageRect.extent.height; | draw_view_info.height = r_proj_layer_view.subImage.imageRect.extent.height; | ||||
| copy_openxr_pose_to_ghost_pose(view_location.pose, draw_view_info.local_pose); | copy_openxr_pose_to_ghost_pose(view_location.pose, draw_view_info.local_pose); | ||||
| ghost_xr_draw_view_info_from_view(view, draw_view_info); | ghost_xr_draw_view_info_from_view(view, draw_view_info); | ||||
| Show All 33 Lines | XrCompositionLayerProjection GHOST_XrSession::drawLayer( | ||||
| r_proj_layer_views.resize(view_count); | r_proj_layer_views.resize(view_count); | ||||
| for (uint32_t view_idx = 0; view_idx < view_count; view_idx++) { | for (uint32_t view_idx = 0; view_idx < view_count; view_idx++) { | ||||
| drawView(m_oxr->swapchains[view_idx], | drawView(m_oxr->swapchains[view_idx], | ||||
| r_proj_layer_views[view_idx], | r_proj_layer_views[view_idx], | ||||
| view_location, | view_location, | ||||
| m_oxr->views[view_idx], | m_oxr->views[view_idx], | ||||
| view_idx, | |||||
| draw_customdata); | draw_customdata); | ||||
| } | } | ||||
| layer.space = m_oxr->reference_space; | layer.space = m_oxr->reference_space; | ||||
| layer.viewCount = r_proj_layer_views.size(); | layer.viewCount = r_proj_layer_views.size(); | ||||
| layer.views = r_proj_layer_views.data(); | layer.views = r_proj_layer_views.data(); | ||||
| return layer; | return layer; | ||||
| ▲ Show 20 Lines • Show All 395 Lines • Show Last 20 Lines | |||||
Better to assert(view_idx < 256) here.