Skip to content

Commit 100aa41

Browse files
committed
Texture loading depending on webgl extensions included default truecolor
1 parent 0cbe896 commit 100aa41

3 files changed

Lines changed: 35 additions & 4 deletions

File tree

src/loader/Cache.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,9 @@ Phaser.Cache.prototype = {
236236
//////////////////
237237

238238
addCompressedTextureMetaData: function (key, url, extension, arrayBuffer) {
239+
var data = (extension in Phaser.LoaderParser) ? Phaser.LoaderParser[extension](arrayBuffer) : arrayBuffer;
239240
this._cache.compressedTexture[key] = {
240-
data: Phaser.LoaderParser[extension](arrayBuffer),
241+
data: data,
241242
url: url,
242243
key: key,
243244
fileFormat: extension

src/loader/Loader.js

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,17 @@ Phaser.Loader.prototype = {
720720
},
721721

722722
texture: function (key, object, overwrite) {
723-
return this.addToFileList('texture', key, object, undefined, overwrite, '.pvr');
723+
var compression = this.game.renderer.extensions.compression, exkey;
724+
if (this.game.renderType === Phaser.WEBGL) {
725+
for (exkey in object) {
726+
if (exkey in compression) {
727+
this.addToFileList('texture', key + '_' + exkey, object[exkey], undefined, overwrite, '.pvr');
728+
} else if (exkey === 'truecolor') {
729+
this.addToFileList('texture', key + '_' + exkey, object[exkey], undefined, overwrite, '.png');
730+
}
731+
}
732+
}
733+
return this;
724734
},
725735

726736
/**
@@ -1958,7 +1968,6 @@ Phaser.Loader.prototype = {
19581968
file.errorMessage = errorMessage;
19591969

19601970
console.warn('Phaser.Loader - ' + file.type + '[' + file.key + ']' + ': ' + errorMessage);
1961-
// debugger;
19621971
}
19631972

19641973
this.processLoadQueue();
@@ -2192,6 +2201,10 @@ Phaser.Loader.prototype = {
21922201
this.xhrLoad(file, this.transformUrl(file.url, file), 'text', this.fileComplete);
21932202
break;
21942203
case 'texture':
2204+
if (file.key.split('_').pop() === 'truecolor') {
2205+
this.loadImageTag(file);
2206+
break;
2207+
}
21952208
case 'binary':
21962209
this.xhrLoad(file, this.transformUrl(file.url, file), 'arraybuffer', this.fileComplete);
21972210
break;
@@ -2666,7 +2679,10 @@ Phaser.Loader.prototype = {
26662679
file.data = data || {};
26672680
break;
26682681
case 'texture':
2669-
this.cache.addCompressedTextureMetaData(file.key, file.url, file.url.split('.').pop().toLowerCase(), xhr.response);
2682+
if (file.data != null)
2683+
this.cache.addCompressedTextureMetaData(file.key, file.url, file.url.split('.').pop().toLowerCase(), file.data);
2684+
else
2685+
this.cache.addCompressedTextureMetaData(file.key, file.url, file.url.split('.').pop().toLowerCase(), xhr.response);
26702686
break;
26712687
case 'image':
26722688

src/pixi/renderers/webgl/WebGLRenderer.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ PIXI.WebGLRenderer = function (game) {
3434
*/
3535
this.type = PIXI.WEBGL_RENDERER;
3636

37+
this.extensions = {};
38+
3739
/**
3840
* The resolution of the renderer
3941
*
@@ -208,6 +210,7 @@ PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer;
208210
PIXI.WebGLRenderer.prototype.initContext = function()
209211
{
210212
var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions);
213+
var etc1, pvrtc, s3tc;
211214

212215
this.gl = gl;
213216
this.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);
@@ -240,6 +243,17 @@ PIXI.WebGLRenderer.prototype.initContext = function()
240243

241244
// now resize and we are good to go!
242245
this.resize(this.width, this.height);
246+
247+
// Load WebGL extension
248+
this.extensions.compression = {};
249+
250+
etc1 = gl.getExtension('WEBGL_compressed_texture_etc1') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_etc1');
251+
pvrtc = gl.getExtension('WEBGL_compressed_texture_pvrtc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc');
252+
s3tc = gl.getExtension('WEBGL_compressed_texture_s3tc') || gl.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc');
253+
254+
if (etc1) this.extensions.compression.etc1 = etc1;
255+
if (pvrtc) this.extensions.compression.pvrtc = pvrtc;
256+
if (s3tc) this.extensions.compression.s3tc = s3tc;
243257
};
244258

245259
PIXI.WebGLRenderer.prototype.setTexturePriority = function (textureNameCollection) {

0 commit comments

Comments
 (0)