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

Unified Diff: remoting/client/gl_canvas.cc

Issue 2591363002: Adding drawable to CRD andorid and iOS gl rendering pipeline. (Closed)
Patch Set: Minor cleanup of an unused const. Created 4 years 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: remoting/client/gl_canvas.cc
diff --git a/remoting/client/gl_canvas.cc b/remoting/client/gl_canvas.cc
index 0a49f13ec26b8f404700d8aa31a9cbf5605f2fed..65e263e1789df7f54b217ac4a411b81f88505f33 100644
--- a/remoting/client/gl_canvas.cc
+++ b/remoting/client/gl_canvas.cc
@@ -65,7 +65,17 @@ const char kDrawTexFrag[] =
namespace remoting {
+GlCanvas::GlCanvas() {}
+
GlCanvas::GlCanvas(int gl_version) : gl_version_(gl_version) {
+#ifndef NDEBUG
+ // Set the background clear color to bright green for debugging purposes.
+ glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
+#else
+ // Set the background clear color to black.
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+#endif
joedow 2016/12/22 00:29:02 Can you reuse the Clear() method after everything
nicholss 2017/01/09 18:50:23 removing the clear function
+
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_texture_size_);
vertex_shader_ = CompileShader(GL_VERTEX_SHADER, kTexCoordToViewVert);
@@ -84,16 +94,19 @@ GlCanvas::GlCanvas(int gl_version) : gl_version_(gl_version) {
glEnableVertexAttribArray(tex_cord_location_);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gl_constructed_ = true;
}
GlCanvas::~GlCanvas() {
- DCHECK(thread_checker_.CalledOnValidThread());
- glDisable(GL_BLEND);
- glDisableVertexAttribArray(tex_cord_location_);
- glDisableVertexAttribArray(position_location_);
- glDeleteProgram(program_);
- glDeleteShader(vertex_shader_);
- glDeleteShader(fragment_shader_);
+ if (gl_constructed_) {
Yuwei 2016/12/21 23:41:58 If you have a separate GlCanvas interface then I d
joedow 2016/12/22 00:29:02 This feels a bit odd. Is there a way to guarantee
nicholss 2016/12/22 16:21:41 It is odd because this is not dependency injection
joedow 2016/12/22 19:18:09 I don't think DI is required to prevent having tes
Sergey Ulanov 2016/12/22 22:38:45 In this case I don't think we need any of it. It s
nicholss 2017/01/09 18:50:23 I would prefer to not test OpenGL and the renderer
nicholss 2017/01/09 18:50:24 I added an interface and moved to a more dependenc
Yuwei 2017/01/09 20:28:51 The previous tests work based on these preconditio
+ DCHECK(thread_checker_.CalledOnValidThread());
+ glDisable(GL_BLEND);
+ glDisableVertexAttribArray(tex_cord_location_);
+ glDisableVertexAttribArray(position_location_);
+ glDeleteProgram(program_);
+ glDeleteShader(vertex_shader_);
+ glDeleteShader(fragment_shader_);
+ }
}
void GlCanvas::SetTransformationMatrix(const std::array<float, 9>& matrix) {
@@ -113,6 +126,15 @@ void GlCanvas::SetViewSize(int width, int height) {
view_size_set_ = true;
}
+void GlCanvas::Clear() {
+ glClear(GL_COLOR_BUFFER_BIT);
Yuwei 2016/12/21 23:41:58 glClearColor only specifies the color and glClear
nicholss 2017/01/09 18:50:24 Fixed.
+
+#ifndef NDEBUG
+ // Set the background clear color to bright green for debugging purposes.
+ glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
+#endif
Yuwei 2016/12/21 23:41:58 Why is the NDEBUG case not here?
+}
+
void GlCanvas::DrawTexture(int texture_id,
GLuint texture_handle,
GLuint vertex_buffer,
@@ -145,4 +167,12 @@ int GlCanvas::GetMaxTextureSize() const {
return max_texture_size_;
}
+GlCanvas* GlCanvas::CreateGlCanvas(int gl_version) {
+ if (gl_version > 0) {
+ return new GlCanvas(gl_version);
+ } else {
+ return new FakeGlCanvas();
joedow 2016/12/22 00:29:01 I don't think this logic should be included in pro
nicholss 2017/01/09 18:50:23 Removing.
+ }
+}
+
} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698