Displaying arbitrary HTML (or webgl) inside a Drupal frame (Drupal 7)
Depending on your needs, you may also not want to create your HTML page containing a WebGL canvas as content managed by Drupal. Instead, you can create a custom module providing a single page with your canvas and the additional JavaScript and CSS files. 

function MODULE_menu() {
  return array(
    'path/to/canvas' =&gt; array(
      'title' =&gt; 'Awesome WebGL application', 
      'page callback' =&gt; 'MODULE_canvas_page', 
      'access callback' =&gt; TRUE, 
      'type' =&gt; MENU_CALLBACK,
    ),
  );
}

function MODULE_canvas_page() {
  drupal_add_js(drupal_get_path('module', 'MODULE') . '/module.js');
  drupal_add_css(drupal_get_path('module', 'MODULE') . '/module.css');
  return theme('webgl_canvas');
}

function MODULE_theme($existing, $type, $theme, $path) {
  return array(
    'webgl_canvas' =&gt; array()
  );
}

function theme_webgl_canvas() {
  return '&lt;canvas id="glcanvas" width="640" height="480"&gt;Your browser doesn\'t appear to support the HTML5 &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; element.&lt;/canvas&gt;';
}


The MODULE_menu() is an implementation of hook_menu(). It declares a page available at path/to/cancvs and handled by the MODULE_canvas_page() function. The handler function adds JavaScript and CSS files using the drupal_add_js() and drupal_add_css() which allow the files to be aggregated into single .js/.css files (if that feature is enabled for the site). It then return the markup for the WebGL canvas. The markup is produced by a theme hook function (theme_webgl_canvas()) declared in MODULE_theme which is an implementation of hook_theme(). This allow the theme or other modules to change the markup.

Because a WebGL page/application would likely use a lot of custom JavaScript, you may also want to check the Managing JavaScript in Drupal 7 guide.