Index: chrome/browser/android/vr_shell/vr_shell_renderer.h |
diff --git a/chrome/browser/android/vr_shell/vr_shell_renderer.h b/chrome/browser/android/vr_shell/vr_shell_renderer.h |
index 540e91b1849de9ece88ef56423b7ef1c383dbb9f..2c69069e00f25c14e1f2ba5dca658cc8c5e390c1 100644 |
--- a/chrome/browser/android/vr_shell/vr_shell_renderer.h |
+++ b/chrome/browser/android/vr_shell/vr_shell_renderer.h |
@@ -21,6 +21,8 @@ enum ShaderID { |
SHADER_UNRECOGNIZED = 0, |
TEXTURE_QUAD_VERTEX_SHADER, |
TEXTURE_QUAD_FRAGMENT_SHADER, |
+ WEBVR_VERTEX_SHADER, |
+ WEBVR_FRAGMENT_SHADER, |
SHADER_ID_MAX |
}; |
@@ -44,6 +46,36 @@ class TexturedQuadRenderer { |
DISALLOW_COPY_AND_ASSIGN(TexturedQuadRenderer); |
}; |
+// Renders a page-generated stereo VR view. |
+class WebVrRenderer { |
+ public: |
+ WebVrRenderer(); |
+ ~WebVrRenderer(); |
+ |
+ void Draw(int texture_handle); |
+ |
+ void UpdateTextureBounds(int eye, const gvr::Rectf& bounds); |
+ |
+ private: |
+ static constexpr size_t VERTEX_STRIDE = sizeof(float) * 4; |
+ static constexpr size_t POSITION_ELEMENTS = 2; |
+ static constexpr size_t TEXCOORD_ELEMENTS = 2; |
+ static constexpr size_t POSITION_OFFSET = 0; |
+ static constexpr size_t TEXCOORD_OFFSET = sizeof(float) * 2; |
+ |
+ GLuint program_handle_; |
+ GLuint tex_uniform_handle_; |
+ GLuint src_rect_uniform_handle_; |
+ GLuint position_handle_; |
+ GLuint texcoord_handle_; |
+ GLuint vertex_buffer_; |
+ |
+ gvr::Rectf left_bounds_; |
+ gvr::Rectf right_bounds_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(WebVrRenderer); |
+}; |
+ |
class VrShellRenderer { |
public: |
VrShellRenderer(); |
@@ -53,8 +85,13 @@ class VrShellRenderer { |
return textured_quad_renderer_.get(); |
} |
+ WebVrRenderer* GetWebVrRenderer() { |
+ return webvr_renderer_.get(); |
+ } |
+ |
private: |
std::unique_ptr<TexturedQuadRenderer> textured_quad_renderer_; |
+ std::unique_ptr<WebVrRenderer> webvr_renderer_; |
DISALLOW_COPY_AND_ASSIGN(VrShellRenderer); |
}; |