Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(670)

Unified Diff: chrome/browser/android/vr_shell/vr_shell_renderer.h

Issue 2775283004: Rendering Daydream controller in a fixed position. (Closed)
Patch Set: Using textures for corresponding button states. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_;

Powered by Google App Engine
This is Rietveld 408576698