Skip to content

Commit 467008a

Browse files
author
pandamicro
committed
Delay initialize shader cache
1 parent f37ba7c commit 467008a

File tree

3 files changed

+22
-96
lines changed

3 files changed

+22
-96
lines changed

CCBoot.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ cc.AsyncPool = function (srcObj, limit, iterator, onEnd, target) {
313313
self._onEndTarget = null;
314314
selector.call(target, errors, results);
315315
}
316-
}
316+
};
317317
};
318318

319319
/**
@@ -2659,7 +2659,6 @@ cc.game = /** @lends cc.game# */{
26592659
cc.renderer = cc.rendererWebGL;
26602660
win.gl = this._renderContext; // global variable declared in CCMacro.js
26612661
cc.renderer.init();
2662-
cc.shaderCache._init();
26632662
cc._drawingUtil = new cc.DrawingPrimitiveWebGL(this._renderContext);
26642663
cc.textureCache._initializingRenderer();
26652664
cc.glExt = {};

cocos2d/core/platform/CCMacro.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ cc.SHADER_POSITION_TEXTURE = "ShaderPositionTexture";
648648
* @constant
649649
* @type {String}
650650
*/
651-
cc.SHADER_POSITION_TEXTURE_UCOLOR = "ShaderPositionTexture_uColor";
651+
cc.SHADER_POSITION_TEXTURE_UCOLOR = "ShaderPositionTextureUColor";
652652
/**
653653
* @constant
654654
* @type {String}
@@ -658,7 +658,7 @@ cc.SHADER_POSITION_TEXTUREA8COLOR = "ShaderPositionTextureA8Color";
658658
* @constant
659659
* @type {String}
660660
*/
661-
cc.SHADER_POSITION_UCOLOR = "ShaderPosition_uColor";
661+
cc.SHADER_POSITION_UCOLOR = "ShaderPositionUColor";
662662
/**
663663
* @constant
664664
* @type {String}

cocos2d/shaders/CCShaderCache.js

Lines changed: 19 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -107,67 +107,67 @@ cc.shaderCache = /** @lends cc.shaderCache# */{
107107
_programs: {},
108108

109109
_init: function () {
110-
this.loadDefaultShaders();
110+
// this.loadDefaultShaders();
111111
return true;
112112
},
113113

114114
_loadDefaultShader: function (program, type) {
115115
switch (type) {
116-
case this.TYPE_POSITION_TEXTURECOLOR:
116+
case cc.SHADER_POSITION_TEXTURECOLOR:
117117
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_COLOR_VERT, cc.SHADER_POSITION_TEXTURE_COLOR_FRAG);
118118
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
119119
program.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
120120
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
121121
break;
122-
case this.TYPE_SPRITE_POSITION_TEXTURECOLOR:
122+
case cc.SHADER_SPRITE_POSITION_TEXTURECOLOR:
123123
program.initWithVertexShaderByteArray(cc.SHADER_SPRITE_POSITION_TEXTURE_COLOR_VERT, cc.SHADER_POSITION_TEXTURE_COLOR_FRAG);
124124
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
125125
program.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
126126
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
127127
break;
128-
case this.TYPE_POSITION_TEXTURECOLOR_ALPHATEST:
128+
case cc.SHADER_POSITION_TEXTURECOLORALPHATEST:
129129
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_COLOR_VERT, cc.SHADER_POSITION_TEXTURE_COLOR_ALPHATEST_FRAG);
130130
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
131131
program.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
132132
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
133133
break;
134-
case this.TYPE_SPRITE_POSITION_TEXTURECOLOR_ALPHATEST:
134+
case cc.SHADER_SPRITE_POSITION_TEXTURECOLORALPHATEST:
135135
program.initWithVertexShaderByteArray(cc.SHADER_SPRITE_POSITION_TEXTURE_COLOR_VERT, cc.SHADER_POSITION_TEXTURE_COLOR_ALPHATEST_FRAG);
136136
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
137137
program.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
138138
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
139139
break;
140-
case this.TYPE_POSITION_COLOR:
140+
case cc.SHADER_POSITION_COLOR:
141141
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_COLOR_VERT, cc.SHADER_POSITION_COLOR_FRAG);
142142
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
143143
program.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
144144
break;
145-
case this.TYPE_SPRITE_POSITION_COLOR:
145+
case cc.SHADER_SPRITE_POSITION_COLOR:
146146
program.initWithVertexShaderByteArray(cc.SHADER_SPRITE_POSITION_COLOR_VERT, cc.SHADER_POSITION_COLOR_FRAG);
147147
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
148148
program.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
149149
break;
150-
case this.TYPE_POSITION_TEXTURE:
150+
case cc.SHADER_POSITION_TEXTURE:
151151
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_VERT, cc.SHADER_POSITION_TEXTURE_FRAG);
152152
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
153153
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
154154
break;
155-
case this.TYPE_POSITION_TEXTURE_UCOLOR:
155+
case cc.SHADER_POSITION_TEXTURE_UCOLOR:
156156
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_UCOLOR_VERT, cc.SHADER_POSITION_TEXTURE_UCOLOR_FRAG);
157157
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
158158
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
159159
break;
160-
case this.TYPE_POSITION_TEXTURE_A8COLOR:
160+
case cc.SHADER_POSITION_TEXTUREA8COLOR:
161161
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_TEXTURE_A8COLOR_VERT, cc.SHADER_POSITION_TEXTURE_A8COLOR_FRAG);
162162
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
163163
program.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
164164
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
165165
break;
166-
case this.TYPE_POSITION_UCOLOR:
166+
case cc.SHADER_POSITION_UCOLOR:
167167
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_UCOLOR_VERT, cc.SHADER_POSITION_UCOLOR_FRAG);
168168
program.addAttribute("aVertex", cc.VERTEX_ATTRIB_POSITION);
169169
break;
170-
case this.TYPE_POSITION_LENGTH_TEXTURECOLOR:
170+
case cc.SHADER_POSITION_LENGTHTEXTURECOLOR:
171171
program.initWithVertexShaderByteArray(cc.SHADER_POSITION_COLOR_LENGTH_TEXTURE_VERT, cc.SHADER_POSITION_COLOR_LENGTH_TEXTURE_FRAG);
172172
program.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
173173
program.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
@@ -188,85 +188,6 @@ cc.shaderCache = /** @lends cc.shaderCache# */{
188188
* loads the default shaders
189189
*/
190190
loadDefaultShaders: function () {
191-
// Position Texture Color shader
192-
var program = new cc.GLProgram();
193-
this._loadDefaultShader(program, this.TYPE_POSITION_TEXTURECOLOR);
194-
this._programs[cc.SHADER_POSITION_TEXTURECOLOR] = program;
195-
this._programs["ShaderPositionTextureColor"] = program;
196-
197-
// Position Texture Color shader with position precalculated
198-
program = new cc.GLProgram();
199-
this._loadDefaultShader(program, this.TYPE_SPRITE_POSITION_TEXTURECOLOR);
200-
this._programs[cc.SHADER_SPRITE_POSITION_TEXTURECOLOR] = program;
201-
this._programs["ShaderSpritePositionTextureColor"] = program;
202-
203-
// Position Texture Color alpha test
204-
program = new cc.GLProgram();
205-
this._loadDefaultShader(program, this.TYPE_POSITION_TEXTURECOLOR_ALPHATEST);
206-
this._programs[cc.SHADER_POSITION_TEXTURECOLORALPHATEST] = program;
207-
this._programs["ShaderPositionTextureColorAlphaTest"] = program;
208-
209-
// Position Texture Color alpha with position precalculated
210-
program = new cc.GLProgram();
211-
this._loadDefaultShader(program, this.TYPE_SPRITE_POSITION_TEXTURECOLOR_ALPHATEST);
212-
this._programs[cc.SHADER_SPRITE_POSITION_TEXTURECOLORALPHATEST] = program;
213-
this._programs["ShaderSpritePositionTextureColorAlphaTest"] = program;
214-
215-
//
216-
// Position, Color shader
217-
//
218-
program = new cc.GLProgram();
219-
this._loadDefaultShader(program, this.TYPE_POSITION_COLOR);
220-
this._programs[cc.SHADER_POSITION_COLOR] = program;
221-
this._programs["ShaderPositionColor"] = program;
222-
223-
//
224-
// Position, Color shader with position precalculated
225-
//
226-
program = new cc.GLProgram();
227-
this._loadDefaultShader(program, this.TYPE_SPRITE_POSITION_COLOR);
228-
this._programs[cc.SHADER_SPRITE_POSITION_COLOR] = program;
229-
this._programs["ShaderSpritePositionColor"] = program;
230-
231-
//
232-
// Position Texture shader
233-
//
234-
program = new cc.GLProgram();
235-
this._loadDefaultShader(program, this.TYPE_POSITION_TEXTURE);
236-
this._programs[cc.SHADER_POSITION_TEXTURE] = program;
237-
this._programs["ShaderPositionTexture"] = program;
238-
239-
//
240-
// Position, Texture attribs, 1 Color as uniform shader
241-
//
242-
program = new cc.GLProgram();
243-
this._loadDefaultShader(program, this.TYPE_POSITION_TEXTURE_UCOLOR);
244-
this._programs[cc.SHADER_POSITION_TEXTURE_UCOLOR] = program;
245-
this._programs["ShaderPositionTextureUColor"] = program;
246-
247-
//
248-
// Position Texture A8 Color shader
249-
//
250-
program = new cc.GLProgram();
251-
this._loadDefaultShader(program, this.TYPE_POSITION_TEXTURE_A8COLOR);
252-
this._programs[cc.SHADER_POSITION_TEXTUREA8COLOR] = program;
253-
this._programs["ShaderPositionTextureA8Color"] = program;
254-
255-
//
256-
// Position and 1 color passed as a uniform (to similate glColor4ub )
257-
//
258-
program = new cc.GLProgram();
259-
this._loadDefaultShader(program, this.TYPE_POSITION_UCOLOR);
260-
this._programs[cc.SHADER_POSITION_UCOLOR] = program;
261-
this._programs["ShaderPositionUColor"] = program;
262-
263-
//
264-
// Position, Legth(TexCoords, Color (used by Draw Node basically )
265-
//
266-
program = new cc.GLProgram();
267-
this._loadDefaultShader(program, this.TYPE_POSITION_LENGTH_TEXTURECOLOR);
268-
this._programs[cc.SHADER_POSITION_LENGTHTEXTURECOLOR] = program;
269-
this._programs["ShaderPositionLengthTextureColor"] = program;
270191
},
271192

272193
/**
@@ -336,6 +257,12 @@ cc.shaderCache = /** @lends cc.shaderCache# */{
336257
* @param {String} key
337258
*/
338259
programForKey: function (key) {
260+
if (!this._programs[key]) {
261+
var program = new cc.GLProgram();
262+
this._loadDefaultShader(program, key);
263+
this._programs[key] = program;
264+
}
265+
339266
return this._programs[key];
340267
},
341268

@@ -345,7 +272,7 @@ cc.shaderCache = /** @lends cc.shaderCache# */{
345272
* @return {cc.GLProgram}
346273
*/
347274
getProgram: function (shaderName) {
348-
return this._programs[shaderName];
275+
return this.programForKey(shaderName);
349276
},
350277

351278
/**

0 commit comments

Comments
 (0)