Index: chrome/browser/android/vr_shell/vr_shell_gl.cc |
diff --git a/chrome/browser/android/vr_shell/vr_shell_gl.cc b/chrome/browser/android/vr_shell/vr_shell_gl.cc |
index c3b906768d2fd7e09fea01670323b19e788e14ad..04576097918cdeb873940654a892d8a31229dee4 100644 |
--- a/chrome/browser/android/vr_shell/vr_shell_gl.cc |
+++ b/chrome/browser/android/vr_shell/vr_shell_gl.cc |
@@ -935,6 +935,7 @@ void VrShellGl::DrawUiView(const gvr::Mat4f& head_pose, |
DrawElements(render_matrix, elementsInDrawOrder); |
if (draw_cursor) { |
DrawCursor(render_matrix); |
+ DrawController(render_matrix); |
} |
} |
} |
@@ -1095,6 +1096,14 @@ void VrShellGl::DrawCursor(const gvr::Mat4f& render_matrix) { |
} |
} |
+void VrShellGl::DrawController(const gvr::Mat4f& view_proj_matrix) { |
+ if (!vr_shell_renderer_->GetControllerRenderer()->IsSetUp()) |
+ return; |
+ auto transform = MatrixMul(view_proj_matrix, controller_->GetTransform()); |
+ auto state = controller_->GetModelState(); |
+ vr_shell_renderer_->GetControllerRenderer()->Draw(state, transform); |
+} |
+ |
bool VrShellGl::ShouldDrawWebVr() { |
return web_vr_mode_ && scene_->GetWebVrRenderingEnabled(); |
} |
@@ -1189,6 +1198,10 @@ base::WeakPtr<VrShellGl> VrShellGl::GetWeakPtr() { |
return weak_ptr_factory_.GetWeakPtr(); |
} |
+void VrShellGl::SetControllerModel(std::unique_ptr<VrControllerModel> model) { |
+ vr_shell_renderer_->GetControllerRenderer()->SetUp(std::move(model)); |
+} |
+ |
void VrShellGl::OnVSync() { |
while (premature_received_frames_ > 0) { |
TRACE_EVENT0("gpu", "VrShellGl::OnWebVRFrameAvailableRetry"); |