浏览代码

Editor: Adding support for systems with no webgl.

Mr.doob 12 年之前
父节点
当前提交
eb12c10cee
共有 3 个文件被更改,包括 27 次插入12 次删除
  1. 2 0
      editor/index.html
  2. 13 11
      editor/js/ui/Sidebar.Renderer.js
  3. 12 1
      editor/js/ui/Viewport.js

+ 2 - 0
editor/index.html

@@ -74,6 +74,8 @@
 	<body>
 
 		<script src="../build/three.js"></script>
+		<script src="../examples/js/libs/system.min.js"></script>
+
 		<script src="../examples/js/controls/EditorControls.js"></script>
 		<script src="../examples/js/loaders/BinaryLoader.js"></script>
 		<script src="../examples/js/loaders/ColladaLoader.js"></script>

+ 13 - 11
editor/js/ui/Sidebar.Renderer.js

@@ -2,11 +2,11 @@ Sidebar.Renderer = function ( signals ) {
 
 	var rendererClasses = {
 
+		'WebGLRenderer': THREE.WebGLRenderer,
+		'WebGLRenderer3': THREE.WebGLRenderer3,
 		'CanvasRenderer': THREE.CanvasRenderer,
 		'SoftwareRenderer': THREE.SoftwareRenderer,
-		'SVGRenderer': THREE.SVGRenderer,
-		'WebGLRenderer': THREE.WebGLRenderer,
-		'WebGLRenderer3': THREE.WebGLRenderer3
+		'SVGRenderer': THREE.SVGRenderer
 
 	};
 
@@ -19,16 +19,18 @@ Sidebar.Renderer = function ( signals ) {
 
 	// class
 
-	var rendererClassRow = new UI.Panel();
-	var rendererClass = new UI.Select().setOptions( {
+	var options = {};
+
+	for ( var key in rendererClasses ) {
 
-		'WebGLRenderer': 'WebGLRenderer',
-		'WebGLRenderer3': 'WebGLRenderer3',
-		'CanvasRenderer': 'CanvasRenderer',
-		'SoftwareRenderer': 'SoftwareRenderer',
-		'SVGRenderer': 'SVGRenderer',
+		if ( key.indexOf( 'WebGL' ) >= 0 && System.support.webgl === false ) continue;
 
-	} ).setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( updateRenderer );
+		options[ key ] = key;
+
+	}
+
+	var rendererClassRow = new UI.Panel();
+	var rendererClass = new UI.Select().setOptions( options ).setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( updateRenderer );
 
 	rendererClassRow.add( new UI.Text( 'Class' ).setWidth( '90px' ).setColor( '#666' ) );
 	rendererClassRow.add( rendererClass );

+ 12 - 1
editor/js/ui/Viewport.js

@@ -520,7 +520,18 @@ var Viewport = function ( signals ) {
 
 	//
 
-	var renderer = new THREE.WebGLRenderer( { antialias: true, alpha: false } );
+	var renderer;
+
+	if ( System.support.webgl === true ) {
+
+		renderer = new THREE.WebGLRenderer( { antialias: true, alpha: false } );
+
+	} else {
+
+		renderer = new THREE.CanvasRenderer();
+
+	}
+
 	renderer.setClearColor( clearColor );
 	renderer.autoClear = false;
 	renderer.autoUpdateScene = false;