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

Unified Diff: remoting/client/ios/display/gl_demo_screen.mm

Issue 2555803002: Adding the iOS app and integration example with GlRenderer. (Closed)
Patch Set: Cleaning up gl_display_handler for chromium. Created 3 years, 11 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: remoting/client/ios/display/gl_demo_screen.mm
diff --git a/remoting/client/ios/display/gl_demo_screen.mm b/remoting/client/ios/display/gl_demo_screen.mm
new file mode 100644
index 0000000000000000000000000000000000000000..f1def2202fabf6848f216972e6e0871bf7521c8d
--- /dev/null
+++ b/remoting/client/ios/display/gl_demo_screen.mm
@@ -0,0 +1,111 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
Yuwei 2017/01/23 21:56:16 Why is this implemented in a .mm file? Does it use
joedow 2017/01/25 23:16:28 There is Chromium guidance that says to use the mm
Yuwei 2017/01/26 20:18:25 What I meant is this file looks the same as a norm
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/client/ios/display/gl_demo_screen.h"
+
+#import <Foundation/Foundation.h>
+
+#include "base/logging.h"
+#include "base/memory/ptr_util.h"
joedow 2017/01/25 23:16:28 Remove ptr_util.h? I don't see it used here.
nicholss 2017/01/26 18:00:16 Done.
+#include "remoting/client/display/canvas.h"
+#include "remoting/client/display/gl_math.h"
+
+namespace remoting {
+
+const GLfloat square[] = {-1.0, -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0};
+
+const GLchar* fragmentShaderSource =
+ "precision mediump float;"
+ "void main() {"
+ " gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);"
+ "} ";
+
+const GLchar* vertexShaderSource =
+ "precision mediump float;"
+ "attribute vec4 a_position;"
+ "void main() {"
+ " gl_Position = a_position;"
+ "}";
+
+const GLchar* a_position = "a_position";
joedow 2017/01/25 23:16:28 Encapsulating constants in an anonymous namespace
nicholss 2017/01/26 18:00:16 Done.
+
+GlDemoScreen::GlDemoScreen() : weak_factory_(this) {}
+
+GlDemoScreen::~GlDemoScreen() {}
+
+void GlDemoScreen::SetCanvas(base::WeakPtr<Canvas> canvas) {
+ canvas_ = canvas;
+
+ // Create and compile vertex shader
joedow 2017/01/25 23:16:28 All comments should end in a period (chromium styl
nicholss 2017/01/26 18:00:16 Done. And added a short description for the class.
+ GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
+ glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
+ glCompileShader(vertexShader);
+
+ // Create and compile fragment shader
+ GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
+ glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
+ glCompileShader(fragmentShader);
+
+ // Create and link program
+ program_ = glCreateProgram();
+ glAttachShader(program_, vertexShader);
+ glAttachShader(program_, fragmentShader);
+ glLinkProgram(program_);
+}
+
+int GlDemoScreen::GetZIndex() {
+ return Drawable::DESKTOP;
+}
+
+bool GlDemoScreen::Draw() {
+ if (!canvas_) {
+ return false;
+ }
+
+ int width = 640;
+ int height = 1024;
joedow 2017/01/25 23:16:28 you could make width and height const or a constex
nicholss 2017/01/26 18:00:16 well... I am not so sure about this. These values
+ square_size_++;
+ if (square_size_ > 300) {
+ square_size_ = 1;
+ }
+
+ // Set the viewport
+ glViewport(0, 0, width, height);
+
+ // Clear
+ glClearColor(0, 1, 0, 1);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ // Use program
+ glUseProgram(program_);
+
+ int skip = 0;
+ for (int i = 0; i < width; i += square_size_) {
+ if (skip == square_size_) {
+ skip = 0;
+ } else {
+ skip = square_size_;
+ }
+ for (int j = skip; j < height; j += square_size_ * 2) {
+ glViewport(i, j, square_size_, square_size_);
+
+ // Send geometry to vertex shader
+ GLuint aPosition = glGetAttribLocation(program_, a_position);
+
+ glVertexAttribPointer(aPosition, 2, GL_FLOAT, GL_FALSE, 0, square);
+ glEnableVertexAttribArray(aPosition);
+
+ // Draw
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+ }
+ }
+ return true;
+}
+
+base::WeakPtr<Drawable> GlDemoScreen::GetWeakPtr() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ return weak_factory_.GetWeakPtr();
+}
+
+} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698