| 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 239ded7f9bb523972ed68ca7b0a6f3a89fd5fe55..b22759b77d0f0aa70c23ffed037de58d68866cb1 100644
|
| --- a/chrome/browser/android/vr_shell/vr_shell_renderer.h
|
| +++ b/chrome/browser/android/vr_shell/vr_shell_renderer.h
|
| @@ -10,6 +10,7 @@
|
| #include <vector>
|
|
|
| #include "base/macros.h"
|
| +#include "chrome/browser/android/vr_shell/vr_controller_model.h"
|
| #include "chrome/browser/android/vr_shell/vr_math.h"
|
| #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr_types.h"
|
| #include "ui/gl/gl_bindings.h"
|
| @@ -35,6 +36,8 @@ enum ShaderID {
|
| GRADIENT_QUAD_FRAGMENT_SHADER,
|
| GRADIENT_GRID_VERTEX_SHADER,
|
| GRADIENT_GRID_FRAGMENT_SHADER,
|
| + CONTROLLER_VERTEX_SHADER,
|
| + CONTROLLER_FRAGMENT_SHADER,
|
| SHADER_ID_MAX
|
| };
|
|
|
| @@ -63,13 +66,9 @@ class BaseRenderer {
|
| protected:
|
| BaseRenderer(ShaderID vertex_id, ShaderID fragment_id);
|
|
|
| - void PrepareToDraw(GLuint view_proj_matrix_handle,
|
| - const gvr::Mat4f& view_proj_matrix);
|
| -
|
| GLuint program_handle_;
|
| GLuint position_handle_;
|
| GLuint tex_coord_handle_;
|
| - GLuint vertex_buffer_ = 0;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(BaseRenderer);
|
| };
|
| @@ -79,6 +78,14 @@ class BaseQuadRenderer : public BaseRenderer {
|
| BaseQuadRenderer(ShaderID vertex_id, ShaderID fragment_id);
|
| ~BaseQuadRenderer() override;
|
|
|
| + static void SetVertexBuffer();
|
| +
|
| + protected:
|
| + void PrepareToDraw(GLuint view_proj_matrix_handle,
|
| + const gvr::Mat4f& view_proj_matrix);
|
| +
|
| + static GLuint vertex_buffer_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(BaseQuadRenderer);
|
| };
|
|
|
| @@ -158,6 +165,26 @@ class LaserRenderer : public BaseQuadRenderer {
|
| DISALLOW_COPY_AND_ASSIGN(LaserRenderer);
|
| };
|
|
|
| +class ControllerRenderer : public BaseRenderer {
|
| + public:
|
| + ControllerRenderer();
|
| + ~ControllerRenderer() override;
|
| +
|
| + void SetUp(const VrControllerModel& model);
|
| + void Draw(const VrControllerModel& model,
|
| + VrControllerModel::State state,
|
| + const gvr::Mat4f& view_proj_matrix);
|
| +
|
| + private:
|
| + GLuint model_view_proj_matrix_handle_;
|
| + GLuint tex_uniform_handle_;
|
| + GLuint indices_buffer_ = 0;
|
| + GLuint vertex_buffer_ = 0;
|
| + std::vector<GLuint> texture_handles_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ControllerRenderer);
|
| +};
|
| +
|
| class GradientQuadRenderer : public BaseQuadRenderer {
|
| public:
|
| GradientQuadRenderer();
|
| @@ -192,6 +219,7 @@ class GradientGridRenderer : public BaseRenderer {
|
| private:
|
| void MakeGridLines(int gridline_count);
|
|
|
| + GLuint vertex_buffer_ = 0;
|
| GLuint model_view_proj_matrix_handle_;
|
| GLuint scene_radius_handle_;
|
| GLuint center_color_handle_;
|
| @@ -217,6 +245,10 @@ class VrShellRenderer {
|
|
|
| LaserRenderer* GetLaserRenderer() { return laser_renderer_.get(); }
|
|
|
| + ControllerRenderer* GetControllerRenderer() {
|
| + return controller_renderer_.get();
|
| + }
|
| +
|
| GradientQuadRenderer* GetGradientQuadRenderer() {
|
| return gradient_quad_renderer_.get();
|
| }
|
| @@ -230,6 +262,7 @@ class VrShellRenderer {
|
| std::unique_ptr<WebVrRenderer> webvr_renderer_;
|
| std::unique_ptr<ReticleRenderer> reticle_renderer_;
|
| std::unique_ptr<LaserRenderer> laser_renderer_;
|
| + std::unique_ptr<ControllerRenderer> controller_renderer_;
|
| std::unique_ptr<GradientQuadRenderer> gradient_quad_renderer_;
|
| std::unique_ptr<GradientGridRenderer> gradient_grid_renderer_;
|
|
|
|
|