diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js index 67d9742..4777cea 100644 --- a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js +++ b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js @@ -48,9 +48,7 @@ if (!gl.createVertexArray) { // webgl 1! - const nativeVaoExtension = gl.getExtension('OES_vertex_array_object') - || gl.getExtension('MOZ_OES_vertex_array_object') - || gl.getExtension('WEBKIT_OES_vertex_array_object'); + const nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; if (nativeVaoExtension) { @@ -58,14 +56,10 @@ nativeVaoExtension.createVertexArrayOES(); gl.bindVertexArray = (vao) => - { nativeVaoExtension.bindVertexArrayOES(vao); - }; gl.deleteVertexArray = (vao) => - { nativeVaoExtension.deleteVertexArrayOES(vao); - }; } else { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js index 67d9742..4777cea 100644 --- a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js +++ b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js @@ -48,9 +48,7 @@ if (!gl.createVertexArray) { // webgl 1! - const nativeVaoExtension = gl.getExtension('OES_vertex_array_object') - || gl.getExtension('MOZ_OES_vertex_array_object') - || gl.getExtension('WEBKIT_OES_vertex_array_object'); + const nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; if (nativeVaoExtension) { @@ -58,14 +56,10 @@ nativeVaoExtension.createVertexArrayOES(); gl.bindVertexArray = (vao) => - { nativeVaoExtension.bindVertexArrayOES(vao); - }; gl.deleteVertexArray = (vao) => - { nativeVaoExtension.deleteVertexArrayOES(vao); - }; } else { diff --git a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js index 2d2de80..0f30fae 100644 --- a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js +++ b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js @@ -68,8 +68,9 @@ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(src) + console.warn(src); console.error(gl.getShaderInfoLog(shader)); + return null; } diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js index 67d9742..4777cea 100644 --- a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js +++ b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js @@ -48,9 +48,7 @@ if (!gl.createVertexArray) { // webgl 1! - const nativeVaoExtension = gl.getExtension('OES_vertex_array_object') - || gl.getExtension('MOZ_OES_vertex_array_object') - || gl.getExtension('WEBKIT_OES_vertex_array_object'); + const nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; if (nativeVaoExtension) { @@ -58,14 +56,10 @@ nativeVaoExtension.createVertexArrayOES(); gl.bindVertexArray = (vao) => - { nativeVaoExtension.bindVertexArrayOES(vao); - }; gl.deleteVertexArray = (vao) => - { nativeVaoExtension.deleteVertexArrayOES(vao); - }; } else { diff --git a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js index 2d2de80..0f30fae 100644 --- a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js +++ b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js @@ -68,8 +68,9 @@ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(src) + console.warn(src); console.error(gl.getShaderInfoLog(shader)); + return null; } diff --git a/src/core/settings.js b/src/core/settings.js index bb636aa..6fc239b 100644 --- a/src/core/settings.js +++ b/src/core/settings.js @@ -46,6 +46,8 @@ */ RESOLUTION: 1, + PREFER_WEBGL_2: false, + /** * Default filter resolution. * @@ -218,5 +220,4 @@ * @type {boolean} */ CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(), - }; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js index 67d9742..4777cea 100644 --- a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js +++ b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js @@ -48,9 +48,7 @@ if (!gl.createVertexArray) { // webgl 1! - const nativeVaoExtension = gl.getExtension('OES_vertex_array_object') - || gl.getExtension('MOZ_OES_vertex_array_object') - || gl.getExtension('WEBKIT_OES_vertex_array_object'); + const nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; if (nativeVaoExtension) { @@ -58,14 +56,10 @@ nativeVaoExtension.createVertexArrayOES(); gl.bindVertexArray = (vao) => - { nativeVaoExtension.bindVertexArrayOES(vao); - }; gl.deleteVertexArray = (vao) => - { nativeVaoExtension.deleteVertexArrayOES(vao); - }; } else { diff --git a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js index 2d2de80..0f30fae 100644 --- a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js +++ b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js @@ -68,8 +68,9 @@ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(src) + console.warn(src); console.error(gl.getShaderInfoLog(shader)); + return null; } diff --git a/src/core/settings.js b/src/core/settings.js index bb636aa..6fc239b 100644 --- a/src/core/settings.js +++ b/src/core/settings.js @@ -46,6 +46,8 @@ */ RESOLUTION: 1, + PREFER_WEBGL_2: false, + /** * Default filter resolution. * @@ -218,5 +220,4 @@ * @type {boolean} */ CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(), - }; diff --git a/src/core/shader/Shader.js b/src/core/shader/Shader.js index 97d59a0..61bf8fb 100644 --- a/src/core/shader/Shader.js +++ b/src/core/shader/Shader.js @@ -47,6 +47,7 @@ } } + // TODO move to shader system.. checkUniformExists(name, group) { if (group.uniforms[name]) diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js index 67d9742..4777cea 100644 --- a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js +++ b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js @@ -48,9 +48,7 @@ if (!gl.createVertexArray) { // webgl 1! - const nativeVaoExtension = gl.getExtension('OES_vertex_array_object') - || gl.getExtension('MOZ_OES_vertex_array_object') - || gl.getExtension('WEBKIT_OES_vertex_array_object'); + const nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; if (nativeVaoExtension) { @@ -58,14 +56,10 @@ nativeVaoExtension.createVertexArrayOES(); gl.bindVertexArray = (vao) => - { nativeVaoExtension.bindVertexArrayOES(vao); - }; gl.deleteVertexArray = (vao) => - { nativeVaoExtension.deleteVertexArrayOES(vao); - }; } else { diff --git a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js index 2d2de80..0f30fae 100644 --- a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js +++ b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js @@ -68,8 +68,9 @@ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(src) + console.warn(src); console.error(gl.getShaderInfoLog(shader)); + return null; } diff --git a/src/core/settings.js b/src/core/settings.js index bb636aa..6fc239b 100644 --- a/src/core/settings.js +++ b/src/core/settings.js @@ -46,6 +46,8 @@ */ RESOLUTION: 1, + PREFER_WEBGL_2: false, + /** * Default filter resolution. * @@ -218,5 +220,4 @@ * @type {boolean} */ CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(), - }; diff --git a/src/core/shader/Shader.js b/src/core/shader/Shader.js index 97d59a0..61bf8fb 100644 --- a/src/core/shader/Shader.js +++ b/src/core/shader/Shader.js @@ -47,6 +47,7 @@ } } + // TODO move to shader system.. checkUniformExists(name, group) { if (group.uniforms[name]) diff --git a/src/core/utils/getTestContext.js b/src/core/utils/getTestContext.js index a4a24cd..3e17994 100644 --- a/src/core/utils/getTestContext.js +++ b/src/core/utils/getTestContext.js @@ -1,3 +1,5 @@ +import settings from '../settings'; + let context = null; /** @@ -13,25 +15,34 @@ if (!context) { const canvas = document.createElement('canvas'); - const options = {}; - canvas.width = 1; - canvas.height = 1; + let gl; - - context = canvas.getContext('webgl', options) - || canvas.getContext('experimental-webgl', options); - - - //canvas.getContext('webgl2', options) - var xt = context.getExtension('WEBGL_draw_buffers'); - - - if (!context) + if (settings.PREFER_WEBGL_2) { - // fail, not able to get a context - throw new Error('This browser does not support webGL. Try using the canvas renderer'); + gl = canvas.getContext('webgl2', {}); } + + if (!gl) + { + gl = canvas.getContext('webgl', {}) + || canvas.getContext('experimental-webgl', {}); + + if (!gl) + { + // fail, not able to get a context + throw new Error('This browser does not support webGL. Try using the canvas renderer'); + } + else + { + // for shader testing.. + gl.getExtension('WEBGL_draw_buffers'); + } + } + + context = gl; + + return gl; } return context; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js index 67d9742..4777cea 100644 --- a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js +++ b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js @@ -48,9 +48,7 @@ if (!gl.createVertexArray) { // webgl 1! - const nativeVaoExtension = gl.getExtension('OES_vertex_array_object') - || gl.getExtension('MOZ_OES_vertex_array_object') - || gl.getExtension('WEBKIT_OES_vertex_array_object'); + const nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; if (nativeVaoExtension) { @@ -58,14 +56,10 @@ nativeVaoExtension.createVertexArrayOES(); gl.bindVertexArray = (vao) => - { nativeVaoExtension.bindVertexArrayOES(vao); - }; gl.deleteVertexArray = (vao) => - { nativeVaoExtension.deleteVertexArrayOES(vao); - }; } else { diff --git a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js index 2d2de80..0f30fae 100644 --- a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js +++ b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js @@ -68,8 +68,9 @@ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(src) + console.warn(src); console.error(gl.getShaderInfoLog(shader)); + return null; } diff --git a/src/core/settings.js b/src/core/settings.js index bb636aa..6fc239b 100644 --- a/src/core/settings.js +++ b/src/core/settings.js @@ -46,6 +46,8 @@ */ RESOLUTION: 1, + PREFER_WEBGL_2: false, + /** * Default filter resolution. * @@ -218,5 +220,4 @@ * @type {boolean} */ CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(), - }; diff --git a/src/core/shader/Shader.js b/src/core/shader/Shader.js index 97d59a0..61bf8fb 100644 --- a/src/core/shader/Shader.js +++ b/src/core/shader/Shader.js @@ -47,6 +47,7 @@ } } + // TODO move to shader system.. checkUniformExists(name, group) { if (group.uniforms[name]) diff --git a/src/core/utils/getTestContext.js b/src/core/utils/getTestContext.js index a4a24cd..3e17994 100644 --- a/src/core/utils/getTestContext.js +++ b/src/core/utils/getTestContext.js @@ -1,3 +1,5 @@ +import settings from '../settings'; + let context = null; /** @@ -13,25 +15,34 @@ if (!context) { const canvas = document.createElement('canvas'); - const options = {}; - canvas.width = 1; - canvas.height = 1; + let gl; - - context = canvas.getContext('webgl', options) - || canvas.getContext('experimental-webgl', options); - - - //canvas.getContext('webgl2', options) - var xt = context.getExtension('WEBGL_draw_buffers'); - - - if (!context) + if (settings.PREFER_WEBGL_2) { - // fail, not able to get a context - throw new Error('This browser does not support webGL. Try using the canvas renderer'); + gl = canvas.getContext('webgl2', {}); } + + if (!gl) + { + gl = canvas.getContext('webgl', {}) + || canvas.getContext('experimental-webgl', {}); + + if (!gl) + { + // fail, not able to get a context + throw new Error('This browser does not support webGL. Try using the canvas renderer'); + } + else + { + // for shader testing.. + gl.getExtension('WEBGL_draw_buffers'); + } + } + + context = gl; + + return gl; } return context; diff --git a/src/deprecation.js b/src/deprecation.js index c4aa8df..0bc5f5a 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -1,6 +1,6 @@ import * as core from './core'; import * as mesh from './mesh'; -//import * as particles from './particles'; +// import * as particles from './particles'; import * as extras from './extras'; import * as filters from './filters'; import * as prepare from './prepare'; @@ -157,7 +157,7 @@ * @see PIXI.particles.ParticleContainer * @deprecated since version 4.0.0 */ - /*ParticleContainer: { + /* ParticleContainer: { enumerable: true, get() { @@ -166,7 +166,7 @@ return particles.ParticleContainer; }, - },*/ + }, */ /** * @class diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 43cb038..80df107 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -124,7 +124,6 @@ antialias: options.antialias, premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', stencil: true, - forceWebGL1:!!options.forceWebGL1, preserveDrawingBuffer: options.preserveDrawingBuffer, }); } diff --git a/src/core/renderers/webgl/systems/ContextSystem.js b/src/core/renderers/webgl/systems/ContextSystem.js index 87a0446..bc59e7f 100644 --- a/src/core/renderers/webgl/systems/ContextSystem.js +++ b/src/core/renderers/webgl/systems/ContextSystem.js @@ -1,4 +1,5 @@ import WebGLSystem from './WebGLSystem'; +import settings from '../../../settings'; let CONTEXT_UID = 0; @@ -21,6 +22,8 @@ this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); + this.extensions = {}; + renderer.view.addEventListener('webglcontextlost', this.handleContextLost, false); renderer.view.addEventListener('webglcontextrestored', this.handleContextRestored, false); } @@ -69,11 +72,9 @@ */ createContext(canvas, options) { - let gl; - // disabled for now! - if(false)//!options.forceWebGL1) + if (settings.PREFER_WEBGL_2) { gl = canvas.getContext('webgl2', options); } @@ -85,6 +86,7 @@ else { this.webGLVersion = 1; + gl = canvas.getContext('webgl', options) || canvas.getContext('experimental-webgl', options); @@ -95,9 +97,33 @@ } } + this.gl = gl; + + this.getExtensions(); + return gl; } + getExtensions() + { + // time to set up default etensions that pixi uses.. + const gl = this.gl; + const extensions = this.extensions; + + if (this.webGLVersion === 1) + { + extensions.drawBuffers = gl.getExtension('WEBGL_draw_buffers'); + extensions.depthTexture = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + extensions.floatTexture = gl.getExtension('OES_texture_float'); + + extensions.vertexArrayObject = gl.getExtension('OES_vertex_array_object') + || gl.getExtension('MOZ_OES_vertex_array_object') + || gl.getExtension('WEBKIT_OES_vertex_array_object'); + } + + // we don't use any specific WebGL 2 ones yet! + } + /** * Handles a lost webgl context * diff --git a/src/core/renderers/webgl/systems/FramebufferSystem.js b/src/core/renderers/webgl/systems/FramebufferSystem.js index 214f5b1..d943d2f 100644 --- a/src/core/renderers/webgl/systems/FramebufferSystem.js +++ b/src/core/renderers/webgl/systems/FramebufferSystem.js @@ -17,7 +17,7 @@ this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; - this.drawBufferExtension = this.gl.getExtension('WEBGL_draw_buffers'); + this.drawBufferExtension = this.renderer.context.extensions.drawBuffers; } bind(framebuffer) @@ -170,7 +170,7 @@ if (framebuffer.depthTexture) { - const depthTextureExt = gl.getExtension('WEBKIT_WEBGL_depth_texture'); + const depthTextureExt = this.renderer.context.extensions.depthTexture; if (depthTextureExt) { diff --git a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js index 67d9742..4777cea 100644 --- a/src/core/renderers/webgl/systems/geometry/GeometrySystem.js +++ b/src/core/renderers/webgl/systems/geometry/GeometrySystem.js @@ -48,9 +48,7 @@ if (!gl.createVertexArray) { // webgl 1! - const nativeVaoExtension = gl.getExtension('OES_vertex_array_object') - || gl.getExtension('MOZ_OES_vertex_array_object') - || gl.getExtension('WEBKIT_OES_vertex_array_object'); + const nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; if (nativeVaoExtension) { @@ -58,14 +56,10 @@ nativeVaoExtension.createVertexArrayOES(); gl.bindVertexArray = (vao) => - { nativeVaoExtension.bindVertexArrayOES(vao); - }; gl.deleteVertexArray = (vao) => - { nativeVaoExtension.deleteVertexArrayOES(vao); - }; } else { diff --git a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js index 2d2de80..0f30fae 100644 --- a/src/core/renderers/webgl/systems/shader/shader/compileProgram.js +++ b/src/core/renderers/webgl/systems/shader/shader/compileProgram.js @@ -68,8 +68,9 @@ if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(src) + console.warn(src); console.error(gl.getShaderInfoLog(shader)); + return null; } diff --git a/src/core/settings.js b/src/core/settings.js index bb636aa..6fc239b 100644 --- a/src/core/settings.js +++ b/src/core/settings.js @@ -46,6 +46,8 @@ */ RESOLUTION: 1, + PREFER_WEBGL_2: false, + /** * Default filter resolution. * @@ -218,5 +220,4 @@ * @type {boolean} */ CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(), - }; diff --git a/src/core/shader/Shader.js b/src/core/shader/Shader.js index 97d59a0..61bf8fb 100644 --- a/src/core/shader/Shader.js +++ b/src/core/shader/Shader.js @@ -47,6 +47,7 @@ } } + // TODO move to shader system.. checkUniformExists(name, group) { if (group.uniforms[name]) diff --git a/src/core/utils/getTestContext.js b/src/core/utils/getTestContext.js index a4a24cd..3e17994 100644 --- a/src/core/utils/getTestContext.js +++ b/src/core/utils/getTestContext.js @@ -1,3 +1,5 @@ +import settings from '../settings'; + let context = null; /** @@ -13,25 +15,34 @@ if (!context) { const canvas = document.createElement('canvas'); - const options = {}; - canvas.width = 1; - canvas.height = 1; + let gl; - - context = canvas.getContext('webgl', options) - || canvas.getContext('experimental-webgl', options); - - - //canvas.getContext('webgl2', options) - var xt = context.getExtension('WEBGL_draw_buffers'); - - - if (!context) + if (settings.PREFER_WEBGL_2) { - // fail, not able to get a context - throw new Error('This browser does not support webGL. Try using the canvas renderer'); + gl = canvas.getContext('webgl2', {}); } + + if (!gl) + { + gl = canvas.getContext('webgl', {}) + || canvas.getContext('experimental-webgl', {}); + + if (!gl) + { + // fail, not able to get a context + throw new Error('This browser does not support webGL. Try using the canvas renderer'); + } + else + { + // for shader testing.. + gl.getExtension('WEBGL_draw_buffers'); + } + } + + context = gl; + + return gl; } return context; diff --git a/src/deprecation.js b/src/deprecation.js index c4aa8df..0bc5f5a 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -1,6 +1,6 @@ import * as core from './core'; import * as mesh from './mesh'; -//import * as particles from './particles'; +// import * as particles from './particles'; import * as extras from './extras'; import * as filters from './filters'; import * as prepare from './prepare'; @@ -157,7 +157,7 @@ * @see PIXI.particles.ParticleContainer * @deprecated since version 4.0.0 */ - /*ParticleContainer: { + /* ParticleContainer: { enumerable: true, get() { @@ -166,7 +166,7 @@ return particles.ParticleContainer; }, - },*/ + }, */ /** * @class diff --git a/src/index.js b/src/index.js index 5f0d025..fe1d592 100644 --- a/src/index.js +++ b/src/index.js @@ -13,7 +13,7 @@ import * as interaction from './interaction'; import * as loaders from './loaders'; import * as mesh from './mesh'; -//import * as particles from './particles'; +// import * as particles from './particles'; import * as prepare from './prepare'; // handle mixins now, after all code has been added, including deprecation