提交 5219c0f1 编写于 作者: T Takahiro

Save isWebGL2 to WebGL context object

上级 b53cec23
......@@ -211,6 +211,8 @@ function WebGLRenderer( parameters ) {
}
_gl.isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext;
// Some experimental-webgl implementations do not have getShaderPrecisionFormat
if ( _gl.getShaderPrecisionFormat === undefined ) {
......
......@@ -4,8 +4,6 @@
function WebGLBufferRenderer( gl, extensions, info ) {
var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;
var mode;
function setMode( value ) {
......@@ -39,11 +37,11 @@ function WebGLBufferRenderer( gl, extensions, info ) {
count = position.data.count;
extension[ isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, 0, count, geometry.maxInstancedCount );
extension[ gl.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, 0, count, geometry.maxInstancedCount );
} else {
extension[ isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount );
extension[ gl.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount );
}
......
......@@ -6,8 +6,6 @@ function WebGLExtensions( gl ) {
var extensions = {};
var isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext );
return {
get: function ( name ) {
......@@ -24,7 +22,7 @@ function WebGLExtensions( gl ) {
case 'WEBGL_depth_texture':
if ( isWebGL2 ) {
if ( gl.isWebGL2 ) {
extension = gl;
......@@ -54,7 +52,7 @@ function WebGLExtensions( gl ) {
default:
if ( isWebGL2 &&
if ( gl.isWebGL2 &&
[ 'ANGLE_instanced_arrays',
'OES_texture_float',
'OES_texture_half_float',
......
......@@ -4,8 +4,6 @@
function WebGLIndexedBufferRenderer( gl, extensions, info ) {
var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;
var mode;
function setMode( value ) {
......@@ -42,7 +40,7 @@ function WebGLIndexedBufferRenderer( gl, extensions, info ) {
}
extension[ isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );
extension[ gl.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount );
info.update( count, mode, geometry.maxInstancedCount );
......
......@@ -206,8 +206,6 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters
var gl = renderer.context;
var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;
var defines = material.defines;
var vertexShader = shader.vertexShader;
......@@ -287,7 +285,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters
//
var customExtensions = isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions );
var customExtensions = gl.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions );
var customDefines = generateDefines( defines );
......@@ -516,7 +514,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters
vertexShader = unrollLoops( vertexShader );
fragmentShader = unrollLoops( fragmentShader );
if ( isWebGL2 && ! material.isRawShaderMaterial ) {
if ( gl.isWebGL2 && ! material.isRawShaderMaterial ) {
var isGLSL3ShaderMaterial = material.isShaderMaterial && material.isGLSL3;
......
......@@ -7,8 +7,6 @@ import { Vector4 } from '../../math/Vector4.js';
function WebGLState( gl, extensions, utils ) {
var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext;
function ColorBuffer() {
var locked = false;
......@@ -432,7 +430,7 @@ function WebGLState( gl, extensions, utils ) {
var extension = extensions.get( 'ANGLE_instanced_arrays' );
extension[ isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, 0 );
extension[ gl.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, 0 );
attributeDivisors[ attribute ] = 0;
}
......@@ -454,7 +452,7 @@ function WebGLState( gl, extensions, utils ) {
var extension = extensions.get( 'ANGLE_instanced_arrays' );
extension[ isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );
extension[ gl.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );
attributeDivisors[ attribute ] = meshPerAttribute;
}
......
......@@ -7,7 +7,6 @@ import { _Math } from '../../math/Math.js';
function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {
var _isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && _gl instanceof WebGL2RenderingContext ); /* global WebGL2RenderingContext */
var _videoTextures = {};
var _canvas;
......@@ -76,7 +75,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
function textureNeedsPowerOfTwo( texture ) {
if ( _isWebGL2 ) return false;
if ( _gl.isWebGL2 ) return false;
return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||
( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );
......@@ -101,7 +100,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
function getInternalFormat( glFormat, glType ) {
if ( ! _isWebGL2 ) return glFormat;
if ( ! _gl.isWebGL2 ) return glFormat;
if ( glFormat === _gl.RGB ) {
......@@ -505,10 +504,10 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
if ( texture.type === FloatType ) {
if ( ! _isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );
if ( ! _gl.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' );
glInternalFormat = _gl.DEPTH_COMPONENT32F;
} else if ( _isWebGL2 ) {
} else if ( _gl.isWebGL2 ) {
// WebGL 2.0 requires signed internalformat for glTexImage2D
glInternalFormat = _gl.DEPTH_COMPONENT16;
......@@ -655,7 +654,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
var glFormat = utils.convert( renderTarget.texture.format );
var glType = utils.convert( renderTarget.texture.type );
var glInternalFormat = getInternalFormat( glFormat, glType );
var array = ( _isWebGL2 ) ? new Uint8Array( renderTarget.width * renderTarget.height * 4 ) : null;
var array = ( _gl.isWebGL2 ) ? new Uint8Array( renderTarget.width * renderTarget.height * 4 ) : null;
state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, array );
_gl.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );
......
......@@ -6,8 +6,6 @@ import { MaxEquation, MinEquation, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, R
function WebGLUtils( gl, extensions ) {
var isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext );
function convert( p ) {
var extension;
......@@ -38,7 +36,7 @@ function WebGLUtils( gl, extensions ) {
if ( p === HalfFloatType ) {
if ( isWebGL2 ) return gl.HALF_FLOAT;
if ( gl.isWebGL2 ) return gl.HALF_FLOAT;
extension = extensions.get( 'OES_texture_half_float' );
......@@ -129,7 +127,7 @@ function WebGLUtils( gl, extensions ) {
if ( p === MinEquation || p === MaxEquation ) {
if ( isWebGL2 ) {
if ( gl.isWebGL2 ) {
if ( p === MinEquation ) return gl.MIN;
if ( p === MaxEquation ) return gl.MAX;
......@@ -149,7 +147,7 @@ function WebGLUtils( gl, extensions ) {
if ( p === UnsignedInt248Type ) {
if ( isWebGL2 ) return gl.UNSIGNED_INT_24_8;
if ( gl.isWebGL2 ) return gl.UNSIGNED_INT_24_8;
extension = extensions.get( 'WEBGL_depth_texture' );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册