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

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

Issue 2775283004: Rendering Daydream controller in a fixed position. (Closed)
Patch Set: Moving code to more appropriate locations. 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..81811d3b458a5e3d2b96ec4eb93b3ff02c345437 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,38 @@ class LaserRenderer : public BaseQuadRenderer {
DISALLOW_COPY_AND_ASSIGN(LaserRenderer);
};
+class ControllerRenderer : public BaseRenderer {
+ public:
+ ControllerRenderer();
+ ~ControllerRenderer() override;
+
+ void SetUp(std::unique_ptr<VrControllerModel> model);
+ void Draw(VrControllerModel::State state, const gvr::Mat4f& view_proj_matrix);
+ bool IsSetUp() const { return setup_; }
+
+ private:
+ GLuint model_view_proj_matrix_handle_;
+ GLuint tex_uniform_handle_;
+ GLuint indices_buffer_ = 0;
+ GLuint vertex_buffer_ = 0;
+ GLint position_components_ = 0;
+ GLenum position_type_ = GL_FLOAT;
+ GLsizei position_stride_ = 0;
+ const GLvoid* position_offset_ = nullptr;
+ GLint tex_coord_components_ = 0;
+ GLenum tex_coord_type_ = GL_FLOAT;
+ GLsizei tex_coord_stride_ = 0;
+ const GLvoid* tex_coord_offset_ = nullptr;
+ GLenum draw_mode_ = GL_TRIANGLES;
+ GLsizei indices_count_ = 0;
+ GLenum indices_type_ = GL_INT;
+ const GLvoid* indices_offset_ = nullptr;
+ std::vector<GLuint> texture_handles_;
+ bool setup_ = false;
+
+ DISALLOW_COPY_AND_ASSIGN(ControllerRenderer);
+};
+
class GradientQuadRenderer : public BaseQuadRenderer {
public:
GradientQuadRenderer();
@@ -192,6 +231,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 +257,10 @@ class VrShellRenderer {
LaserRenderer* GetLaserRenderer() { return laser_renderer_.get(); }
+ ControllerRenderer* GetControllerRenderer() {
+ return controller_renderer_.get();
+ }
+
GradientQuadRenderer* GetGradientQuadRenderer() {
return gradient_quad_renderer_.get();
}
@@ -230,6 +274,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_;
« no previous file with comments | « chrome/browser/android/vr_shell/vr_shell_gl.cc ('k') | chrome/browser/android/vr_shell/vr_shell_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698