// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. define([ "console", "mojo/apps/js/bindings/connector", "mojo/apps/js/bindings/core", "mojo/apps/js/bindings/gl", "mojo/apps/js/bindings/threading", "mojom/native_viewport", "mojom/gles2", ], function(console, connector, core, gljs, threading, nativeViewport, gles2) { const VERTEX_SHADER_SOURCE = "uniform mat4 u_mvpMatrix; \n" + "attribute vec4 a_position; \n" + "void main() \n" + "{ \n" + " gl_Position = u_mvpMatrix * a_position; \n" + "} \n"; function NativeViewportClientImpl() { } // TODO(aa): It is a bummer to need this stub object in JavaScript. We should // have a 'client' object that contains both the sending and receiving bits of // the client side of the interface. Since JS is loosely typed, we do not need // a separate base class to inherit from to receive callbacks. NativeViewportClientImpl.prototype = Object.create(nativeViewport.NativeViewportClientStub.prototype); NativeViewportClientImpl.prototype.didOpen = function() { console.log("NativeViewportClientImpl.prototype.DidOpen"); }; function GLES2ClientImpl() { } GLES2ClientImpl.prototype = Object.create(gles2.GLES2ClientStub.prototype); GLES2ClientImpl.prototype.didCreateContext = function(encoded, width, height) { console.log("GLES2ClientImpl.prototype.didCreateContext"); var gl = new gljs.Context(encoded, width, height); var shader = gl.createShader(gl.VERTEX_SHADER); console.log("shader is: ", String(shader)); gl.shaderSource(shader, VERTEX_SHADER_SOURCE); gl.compileShader(shader); console.log("all done"); }; GLES2ClientImpl.prototype.contextLost = function() { console.log("GLES2ClientImpl.prototype.contextLost"); }; return function(handle) { var nativeViewportConnection = new connector.Connection( handle, NativeViewportClientImpl, nativeViewport.NativeViewportProxy); var gles2Handles = core.createMessagePipe(); var gles2Connection = new connector.Connection( gles2Handles.handle0, GLES2ClientImpl, gles2.GLES2Proxy); nativeViewportConnection.remote.open(); nativeViewportConnection.remote.createGLES2Context(gles2Handles.handle1); }; });