@@ -87,7 +87,8 @@ SpriteBatch32.prototype = {
8787 CreateAttribDesc ( gl , program , 'a_tex_coord' , 2 , gl . FLOAT , false , CONST . VERTEX_SIZE , 8 ) ,
8888 CreateAttribDesc ( gl , program , 'a_translate' , 2 , gl . FLOAT , false , CONST . VERTEX_SIZE , 16 ) ,
8989 CreateAttribDesc ( gl , program , 'a_scale' , 2 , gl . FLOAT , false , CONST . VERTEX_SIZE , 24 ) ,
90- CreateAttribDesc ( gl , program , 'a_rotation' , 1 , gl . FLOAT , false , CONST . VERTEX_SIZE , 32 )
90+ CreateAttribDesc ( gl , program , 'a_rotation' , 1 , gl . FLOAT , false , CONST . VERTEX_SIZE , 32 ) ,
91+ CreateAttribDesc ( gl , program , 'a_color' , 3 , 5121 , true , CONST . VERTEX_SIZE , 36 )
9192 ] ;
9293
9394 var vertexArray = new VertexArray ( CreateBuffer ( gl , gl . ARRAY_BUFFER , gl . STREAM_DRAW , null , vertexDataBuffer . getByteCapacity ( ) ) , attribArray ) ;
@@ -136,60 +137,65 @@ SpriteBatch32.prototype = {
136137 return ( this . vertexDataBuffer . getByteLength ( ) >= this . vertexDataBuffer . getByteCapacity ( ) ) ;
137138 } ,
138139
139- add : function ( frame , pivotX , pivotY , translateX , translateY , scaleX , scaleY , rotation )
140+ add : function ( frame , pivotX , pivotY , translateX , translateY , scaleX , scaleY , rotation , vertexColor )
140141 {
141142 this . manager . setBatch ( this , frame . texture . source [ 0 ] . glTexture ) ;
142143
143144 // The user must check if the buffers are full before flushing
144145 // this is to give freedom of when should the renderer flush. var vertexDataBuffer = this.vertexDataBuffer;
145146 var vertexDataBuffer = this . vertexDataBuffer ;
146- var vertexBuffer = vertexDataBuffer . floatView ;
147+ var vertexBufferF32 = vertexDataBuffer . floatView ;
148+ var vertexBufferU32 = vertexDataBuffer . uintView ;
147149 var vertexOffset = vertexDataBuffer . allocate ( CONST . SPRITE_VERTEX_COMPONENT_COUNT * CONST . SPRITE_VERTEX_COUNT ) ;
148150 var uvs = frame . uvs ;
149151 var x = - pivotX ;
150152 var y = - pivotY ;
151153 var width = frame . width ;
152154 var height = frame . height ;
153155
154- vertexBuffer [ vertexOffset ++ ] = x ;
155- vertexBuffer [ vertexOffset ++ ] = y ;
156- vertexBuffer [ vertexOffset ++ ] = uvs . x0 ;
157- vertexBuffer [ vertexOffset ++ ] = uvs . y0 ;
158- vertexBuffer [ vertexOffset ++ ] = translateX ;
159- vertexBuffer [ vertexOffset ++ ] = translateY ;
160- vertexBuffer [ vertexOffset ++ ] = scaleX ;
161- vertexBuffer [ vertexOffset ++ ] = scaleY ;
162- vertexBuffer [ vertexOffset ++ ] = rotation ;
163-
164- vertexBuffer [ vertexOffset ++ ] = x ;
165- vertexBuffer [ vertexOffset ++ ] = y + height ;
166- vertexBuffer [ vertexOffset ++ ] = uvs . x1 ;
167- vertexBuffer [ vertexOffset ++ ] = uvs . y1 ;
168- vertexBuffer [ vertexOffset ++ ] = translateX ;
169- vertexBuffer [ vertexOffset ++ ] = translateY ;
170- vertexBuffer [ vertexOffset ++ ] = scaleX ;
171- vertexBuffer [ vertexOffset ++ ] = scaleY ;
172- vertexBuffer [ vertexOffset ++ ] = rotation ;
156+ vertexBufferF32 [ vertexOffset ++ ] = x ;
157+ vertexBufferF32 [ vertexOffset ++ ] = y ;
158+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x0 ;
159+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y0 ;
160+ vertexBufferF32 [ vertexOffset ++ ] = translateX ;
161+ vertexBufferF32 [ vertexOffset ++ ] = translateY ;
162+ vertexBufferF32 [ vertexOffset ++ ] = scaleX ;
163+ vertexBufferF32 [ vertexOffset ++ ] = scaleY ;
164+ vertexBufferF32 [ vertexOffset ++ ] = rotation ;
165+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . topLeft ;
166+
167+ vertexBufferF32 [ vertexOffset ++ ] = x ;
168+ vertexBufferF32 [ vertexOffset ++ ] = y + height ;
169+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x1 ;
170+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y1 ;
171+ vertexBufferF32 [ vertexOffset ++ ] = translateX ;
172+ vertexBufferF32 [ vertexOffset ++ ] = translateY ;
173+ vertexBufferF32 [ vertexOffset ++ ] = scaleX ;
174+ vertexBufferF32 [ vertexOffset ++ ] = scaleY ;
175+ vertexBufferF32 [ vertexOffset ++ ] = rotation ;
176+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . bottomLeft ;
173177
174- vertexBuffer [ vertexOffset ++ ] = x + width ;
175- vertexBuffer [ vertexOffset ++ ] = y + height ;
176- vertexBuffer [ vertexOffset ++ ] = uvs . x2 ;
177- vertexBuffer [ vertexOffset ++ ] = uvs . y2 ;
178- vertexBuffer [ vertexOffset ++ ] = translateX ;
179- vertexBuffer [ vertexOffset ++ ] = translateY ;
180- vertexBuffer [ vertexOffset ++ ] = scaleX ;
181- vertexBuffer [ vertexOffset ++ ] = scaleY ;
182- vertexBuffer [ vertexOffset ++ ] = rotation ;
183-
184- vertexBuffer [ vertexOffset ++ ] = x + width ;
185- vertexBuffer [ vertexOffset ++ ] = y ;
186- vertexBuffer [ vertexOffset ++ ] = uvs . x3 ;
187- vertexBuffer [ vertexOffset ++ ] = uvs . y3 ;
188- vertexBuffer [ vertexOffset ++ ] = translateX ;
189- vertexBuffer [ vertexOffset ++ ] = translateY ;
190- vertexBuffer [ vertexOffset ++ ] = scaleX ;
191- vertexBuffer [ vertexOffset ++ ] = scaleY ;
192- vertexBuffer [ vertexOffset ++ ] = rotation ;
178+ vertexBufferF32 [ vertexOffset ++ ] = x + width ;
179+ vertexBufferF32 [ vertexOffset ++ ] = y + height ;
180+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x2 ;
181+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y2 ;
182+ vertexBufferF32 [ vertexOffset ++ ] = translateX ;
183+ vertexBufferF32 [ vertexOffset ++ ] = translateY ;
184+ vertexBufferF32 [ vertexOffset ++ ] = scaleX ;
185+ vertexBufferF32 [ vertexOffset ++ ] = scaleY ;
186+ vertexBufferF32 [ vertexOffset ++ ] = rotation ;
187+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . bottomRight ;
188+
189+ vertexBufferF32 [ vertexOffset ++ ] = x + width ;
190+ vertexBufferF32 [ vertexOffset ++ ] = y ;
191+ vertexBufferF32 [ vertexOffset ++ ] = uvs . x3 ;
192+ vertexBufferF32 [ vertexOffset ++ ] = uvs . y3 ;
193+ vertexBufferF32 [ vertexOffset ++ ] = translateX ;
194+ vertexBufferF32 [ vertexOffset ++ ] = translateY ;
195+ vertexBufferF32 [ vertexOffset ++ ] = scaleX ;
196+ vertexBufferF32 [ vertexOffset ++ ] = scaleY ;
197+ vertexBufferF32 [ vertexOffset ++ ] = rotation ;
198+ vertexBufferU32 [ vertexOffset ++ ] = vertexColor . topRight ;
193199
194200 this . elementCount += CONST . SPRITE_INDEX_COUNT ;
195201 } ,
0 commit comments