1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Global variable.
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)var gl_context;
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)initializeWebGL = function(canvas) {
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  gl_context = null;
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Try to grab the standard context.
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  gl_context = canvas.getContext("webgl") ||
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)               canvas.getContext("experimental-webgl");
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // If we don't have a GL context, give up now
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (!gl_context) {
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    alert("Unable to initialize WebGL. Your browser may not support it.");
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)startWebGLContext = function() {
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  var canvas = document.getElementById("glcanvas");
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Initialize the GL context.
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  initializeWebGL(canvas);
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Only continue if WebGL is available and working.
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (gl_context) {
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    gl_context.clearColor(0.0, 0.0, 0.0, 1.0);
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    gl_context.enable(gl_context.DEPTH_TEST);
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    gl_context.depthFunc(gl_context.LEQUAL);
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    gl_context.clearDepth(1);
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    gl_context.clear(gl_context.COLOR_BUFFER_BIT |
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                     gl_context.DEPTH_BUFFER_BIT);
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}