Browse Source

Add WebGL1Renderer.

Mugen87 5 years ago
parent
commit
abc549c057

+ 48 - 0
docs/api/en/renderers/WebGL1Renderer.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:WebGLRenderer] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+		Since r118 [page:WebGLRenderer] automatically uses a WebGL 2 rendering context. When upgrading an existing project to
+		=> r118, applications might break because of two reasons:
+
+		<ul>
+			<li>Custom shader code needs to be GLSL 3.0 conform.</li>
+			<li>WebGL 1 extension checks have to be changed.</li>
+		</ul>
+
+		If you can't afford the time to upgrade your code but still want to use the latest version, you can use [name]. This
+		version of the renderer will enforce a WebGL 1 rendering context.
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:Object parameters] )</h3>
+		<p>
+		Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+		<p>See the base [page:WebGLRenderer] class for common properties.</p>
+
+
+		<h2>Methods</h2>
+		<p>See the base [page:WebGLRenderer] class for common methods.</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 48 - 0
docs/api/zh/renderers/WebGL1Renderer.html

@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8" />
+		<base href="../../../" />
+		<script src="list.js"></script>
+		<script src="page.js"></script>
+		<link type="text/css" rel="stylesheet" href="page.css" />
+	</head>
+	<body>
+		[page:WebGLRenderer] &rarr;
+
+		<h1>[name]</h1>
+
+		<p class="desc">
+		Since r118 [page:WebGLRenderer] automatically uses a WebGL 2 rendering context. When upgrading an existing project to
+		=> r118, applications might break because of two reasons:
+
+		<ul>
+			<li>Custom shader code needs to be GLSL 3.0 conform.</li>
+			<li>WebGL 1 extension checks have to be changed.</li>
+		</ul>
+
+		If you can't afford the time to upgrade your code but still want to use the latest version, you can use [name]. This
+		version of the renderer will enforce a WebGL 1 rendering context.
+		</p>
+
+		<h2>Constructor</h2>
+
+		<h3>[name]( [param:Object parameters] )</h3>
+		<p>
+		Creates a new [name].
+		</p>
+
+		<h2>Properties</h2>
+		<p>See the base [page:WebGLRenderer] class for common properties.</p>
+
+
+		<h2>Methods</h2>
+		<p>See the base [page:WebGLRenderer] class for common methods.</p>
+
+		<h2>Source</h2>
+
+		<p>
+			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
+		</p>
+	</body>
+</html>

+ 2 - 0
docs/list.js

@@ -312,6 +312,7 @@ var list = {
 			"Renderers": {
 				"WebGLMultisampleRenderTarget": "api/en/renderers/WebGLMultisampleRenderTarget",
 				"WebGLRenderer": "api/en/renderers/WebGLRenderer",
+				"WebGL1Renderer": "api/en/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/en/renderers/WebGLRenderTarget",
 				"WebGLCubeRenderTarget": "api/en/renderers/WebGLCubeRenderTarget"
 			},
@@ -771,6 +772,7 @@ var list = {
 			"渲染器": {
 				"WebGLMultisampleRenderTarget": "api/zh/renderers/WebGLMultisampleRenderTarget",
 				"WebGLRenderer": "api/zh/renderers/WebGLRenderer",
+				"WebGL1Renderer": "api/zh/renderers/WebGL1Renderer",
 				"WebGLRenderTarget": "api/zh/renderers/WebGLRenderTarget",
 				"WebGLCubeRenderTarget": "api/zh/renderers/WebGLCubeRenderTarget"
 			},

+ 1 - 0
src/Three.js

@@ -5,6 +5,7 @@ export { WebGLMultisampleRenderTarget } from './renderers/WebGLMultisampleRender
 export { WebGLCubeRenderTarget } from './renderers/WebGLCubeRenderTarget.js';
 export { WebGLRenderTarget } from './renderers/WebGLRenderTarget.js';
 export { WebGLRenderer } from './renderers/WebGLRenderer.js';
+export { WebGL1Renderer } from './renderers/WebGL1Renderer.js';
 export { ShaderLib } from './renderers/shaders/ShaderLib.js';
 export { UniformsLib } from './renderers/shaders/UniformsLib.js';
 export { UniformsUtils } from './renderers/shaders/UniformsUtils.js';

+ 8 - 0
src/renderers/WebGL1Renderer.d.ts

@@ -0,0 +1,8 @@
+import { WebGLRenderer, WebGLRendererParameters } from './WebGLRenderer';
+
+export class WebGL1Renderer extends WebGLRenderer {
+
+	constructor( parameters?: WebGLRendererParameters );
+	readonly isWebGL1Renderer: true;
+
+}

+ 21 - 0
src/renderers/WebGL1Renderer.js

@@ -0,0 +1,21 @@
+import { WebGLRenderer } from './WebGLRenderer.js';
+
+/**
+ * @author Mugen87 / https://github.com/Mugen87
+ */
+
+function WebGL1Renderer( parameters ) {
+
+	WebGLRenderer.call( this, parameters );
+
+}
+
+WebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {
+
+	constructor: WebGL1Renderer,
+
+	isWebGL1Renderer: true
+
+} );
+
+export { WebGL1Renderer };

+ 9 - 1
src/renderers/WebGLRenderer.js

@@ -204,7 +204,15 @@ function WebGLRenderer( parameters ) {
 		_canvas.addEventListener( 'webglcontextlost', onContextLost, false );
 		_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
 
-		_gl = _context || _canvas.getContext( 'webgl2', contextAttributes ) || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );
+		if ( this.isWebGL1Renderer === true ) {
+
+			_gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );
+
+		} else {
+
+			_gl = _context || _canvas.getContext( 'webgl2', contextAttributes ) || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes );
+
+		}
 
 		if ( _gl === null ) {