<!DOCTYPE html>
<html>
  <head>
<meta charset="utf-8">
<!--

/*
** Copyright (c) 2012 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/

-->
    <title>WebGL tests</title>
  </head>
  <body>
    
    <h1>Tests for the WebGL canvas context</h1>
    
    <h2>These tests are intended to serve the following purposes:</h2>
    <ul>
      <li>Assert spec conformance (so that WebGL pages work the same across browsers and hardware)</li>
      <li>Check the safety of the GL binding (bounds checking, same origin policy)</li>
      <li>Provide performance numbers for developers</li>
    </ul>

    <h2>Test runners</h2>
    <ul>
      <li><a href="all_tests_linkonly.html">Run tests manually</a></li>
      <li><a href="all_tests.html">Run all tests in parallel</a></li>
      <li><a href="all_tests_sequential.html">Run all tests sequentially</a></li>
    </ul>


    <h2>Demos</h2>
    <ul>
      <li><a href="demos/opengl_web.html">OpenGL for the web</a> (requires working FBOs and null textures or using canvases as textures)</li>
      <li><a href="demos/video.html">Green screen video demo with a color remapping filter</a> (requires loading &lt;video> to texture with texImage2D)</li>
    </ul>

    <h2>Running the tests</h2>

    <ol>
      <li><a href="http://learningwebgl.com/blog/?p=11">Install a browser with WebGL support</a></li>
      <li>Open one of the test runners linked above in your browser.</li>
      <li>For more control over the tests, go the <a href="http://github.com/kig/canvas3d-tests">GitHub page</a>, see the readme, and clone the repo.</li>
    </ol>

    <h2>Want to contribute?</h2>

    <p>See the <a href="README.md">README</a>.</p>
    <p>See the <a href="http://github.com/kig/canvas3d-tests">GitHub page</a>.</p>
    <p>Mail me at <a href="mailto:ilmari.heikkinen@gmail.com">ilmari.heikkinen@gmail.com</a></p>


    <h2>For more information on WebGL</h2>

    <ul>
      <li><a href="http://planet-webgl.org">Planet WebGL</a></li>
      <li><a href="http://learningwebgl.com">Learning WebGL</a></li>
      <li><a href="http://www.khronos.org/message_boards/viewforum.php?f=34">WebGL on Khronos Message Boards</a></li>
    </ul>

    <h2>Developer links</h2>
    <ul>
      <li><a href="https://bugzilla.mozilla.org/buglist.cgi?quicksearch=webgl">WebGL on Mozilla Bugzilla</a></li>
      <li><a href="https://bugzilla.webkit.org/buglist.cgi?quicksearch=webgl">WebGL on WebKit Bugzilla</a></li>
      <li><a href="http://code.google.com/p/chromium/issues/list?q=label:3D-WebGL">WebGL on Chromium Bugzilla</a></li>
    </ul>


    <h2>License</h2>

    <p>
      These tests are released under the BSD license. The images and videos used in the tests are the respective property of their authors.
    </p>

  </body>
</html>
