Skip to content

Commit d48237f

Browse files
committed
Changed blitter batch to sprite batch on bitmap text
1 parent ad540d9 commit d48237f

2 files changed

Lines changed: 31 additions & 18 deletions

File tree

v3/src/gameobjects/bitmaptext/dynamic/DynamicBitmapTextWebGLRenderer.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
1515
var cameraScrollY = camera.scrollY * gameObject.scrollFactorY;
1616
var text = gameObject.text;
1717
var textLength = text.length;
18-
var chars = gameObject.fontData.chars;
18+
var chars = gameObject.fontData.data.chars;
1919
var lineHeight = gameObject.fontData.lineHeight;
20-
var blitterBatch = renderer.blitterBatch;
20+
var spriteBatch = renderer.spriteBatch;
2121
var alpha = gameObject.alpha;
22-
var vertexDataBuffer = blitterBatch.vertexDataBuffer;
22+
var vertexDataBuffer = spriteBatch.vertexDataBuffer;
2323
var vertexBuffer = vertexDataBuffer.floatView;
24+
var vertexBufferU32 = vertexDataBuffer.uintView;
2425
var vertexOffset = 0;
2526
var textureData = gameObject.texture.source[textureFrame.sourceIndex];
2627
var textureX = textureFrame.cutX;
@@ -37,6 +38,7 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
3738
var glyphY = 0;
3839
var glyphW = 0;
3940
var glyphH = 0;
41+
var vertexColor = 0xFFFFFFFF;
4042
var x = 0;
4143
var y = 0;
4244
var rotation = 0;
@@ -52,7 +54,7 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
5254
var cameraMatrix = camera.matrix.matrix;
5355
var mva, mvb, mvc, mvd, mve, mvf, tx0, ty0, tx1, ty1, tx2, ty2, tx3, ty3;
5456
var sra, srb, src, srd, sre, srf, cma, cmb, cmc, cmd, cme, cmf;
55-
var scale = (gameObject.fontSize / gameObject.fontData.size);
57+
var scale = (gameObject.fontSize / gameObject.fontData.data.size);
5658
var uta, utb, utc, utd, ute, utf;
5759
var tempMatrixCharMatrix = tempMatrixChar.matrix;
5860
var renderTarget = gameObject.renderTarget;
@@ -140,12 +142,13 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
140142

141143
if (displayCallback)
142144
{
143-
var output = displayCallback({ index: index, charCode: charCode, x: x, y: y, scale: scale, rotation: 0, data: glyph.data });
145+
var output = displayCallback({ color: 0xFFFFFF, index: index, charCode: charCode, x: x, y: y, scale: scale, rotation: 0, data: glyph.data });
144146

145147
x = output.x;
146148
y = output.y;
147149
scale = output.scale;
148150
rotation = output.rotation;
151+
vertexColor = output.color;
149152
}
150153

151154
x -= gameObject.scrollX | 0;
@@ -186,37 +189,41 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
186189
vmin = glyphY / textureHeight;
187190
vmax = (glyphY + glyphH) / textureHeight;
188191

189-
if (blitterBatch.elementCount >= blitterBatch.maxParticles)
192+
if (spriteBatch.elementCount >= spriteBatch.maxParticles)
190193
{
191-
blitterBatch.flush();
194+
spriteBatch.flush();
192195
}
193196

194-
renderer.setRenderer(blitterBatch, texture, renderTarget);
195-
vertexOffset = vertexDataBuffer.allocate(20);
196-
blitterBatch.elementCount += 6;
197+
renderer.setRenderer(spriteBatch, texture, renderTarget);
198+
vertexOffset = vertexDataBuffer.allocate(24);
199+
spriteBatch.elementCount += 6;
197200

198201
vertexBuffer[vertexOffset++] = tx0;
199202
vertexBuffer[vertexOffset++] = ty0;
200203
vertexBuffer[vertexOffset++] = umin;
201204
vertexBuffer[vertexOffset++] = vmin;
205+
vertexBufferU32[vertexOffset++] = vertexColor;
202206
vertexBuffer[vertexOffset++] = alpha;
203207

204208
vertexBuffer[vertexOffset++] = tx1;
205209
vertexBuffer[vertexOffset++] = ty1;
206210
vertexBuffer[vertexOffset++] = umin;
207211
vertexBuffer[vertexOffset++] = vmax;
212+
vertexBufferU32[vertexOffset++] = vertexColor;
208213
vertexBuffer[vertexOffset++] = alpha;
209214

210215
vertexBuffer[vertexOffset++] = tx2;
211216
vertexBuffer[vertexOffset++] = ty2;
212217
vertexBuffer[vertexOffset++] = umax;
213218
vertexBuffer[vertexOffset++] = vmax;
219+
vertexBufferU32[vertexOffset++] = vertexColor;
214220
vertexBuffer[vertexOffset++] = alpha;
215221

216222
vertexBuffer[vertexOffset++] = tx3;
217223
vertexBuffer[vertexOffset++] = ty3;
218224
vertexBuffer[vertexOffset++] = umax;
219225
vertexBuffer[vertexOffset++] = vmin;
226+
vertexBufferU32[vertexOffset++] = vertexColor;
220227
vertexBuffer[vertexOffset++] = alpha;
221228

222229
xAdvance += glyph.xAdvance;
@@ -227,7 +234,7 @@ var DynamicBitmapTextWebGLRenderer = function (renderer, gameObject, interpolati
227234

228235
if (gameObject.width > 0 && gameObject.height > 0)
229236
{
230-
blitterBatch.flush();
237+
spriteBatch.flush();
231238

232239
if (renderer.scissor.enabled)
233240
{

v3/src/gameobjects/bitmaptext/static/BitmapTextWebGLRenderer.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ var BitmapTextWebGLRenderer = function (renderer, gameObject, interpolationPerce
1515
var textLength = text.length;
1616
var chars = gameObject.fontData.chars;
1717
var lineHeight = gameObject.fontData.lineHeight;
18-
var blitterBatch = renderer.blitterBatch;
18+
var spriteBatch = renderer.spriteBatch;
1919
var alpha = gameObject.alpha;
20-
var vertexDataBuffer = blitterBatch.vertexDataBuffer;
20+
var vertexDataBuffer = spriteBatch.vertexDataBuffer;
2121
var vertexBuffer = vertexDataBuffer.floatView;
22+
var vertexBufferU32 = vertexDataBuffer.uintView;
2223
var vertexOffset = 0;
2324
var srcX = gameObject.x;
2425
var srcY = gameObject.y;
@@ -37,6 +38,7 @@ var BitmapTextWebGLRenderer = function (renderer, gameObject, interpolationPerce
3738
var glyphY = 0;
3839
var glyphW = 0;
3940
var glyphH = 0;
41+
var vertexColor = 0xFFFFFFFF;
4042
var x = 0;
4143
var y = 0;
4244
var xw = 0;
@@ -144,37 +146,41 @@ var BitmapTextWebGLRenderer = function (renderer, gameObject, interpolationPerce
144146
vmin = glyphY / textureHeight;
145147
vmax = (glyphY + glyphH) / textureHeight;
146148

147-
if (blitterBatch.elementCount >= blitterBatch.maxParticles)
149+
if (spriteBatch.elementCount >= spriteBatch.maxParticles)
148150
{
149-
blitterBatch.flush();
151+
spriteBatch.flush();
150152
}
151153

152-
renderer.setRenderer(blitterBatch, texture, renderTarget);
153-
vertexOffset = vertexDataBuffer.allocate(20);
154-
blitterBatch.elementCount += 6;
154+
renderer.setRenderer(spriteBatch, texture, renderTarget);
155+
vertexOffset = vertexDataBuffer.allocate(24);
156+
spriteBatch.elementCount += 6;
155157

156158
vertexBuffer[vertexOffset++] = tx0;
157159
vertexBuffer[vertexOffset++] = ty0;
158160
vertexBuffer[vertexOffset++] = umin;
159161
vertexBuffer[vertexOffset++] = vmin;
162+
vertexBufferU32[vertexOffset++] = vertexColor;
160163
vertexBuffer[vertexOffset++] = alpha;
161164

162165
vertexBuffer[vertexOffset++] = tx1;
163166
vertexBuffer[vertexOffset++] = ty1;
164167
vertexBuffer[vertexOffset++] = umin;
165168
vertexBuffer[vertexOffset++] = vmax;
169+
vertexBufferU32[vertexOffset++] = vertexColor;
166170
vertexBuffer[vertexOffset++] = alpha;
167171

168172
vertexBuffer[vertexOffset++] = tx2;
169173
vertexBuffer[vertexOffset++] = ty2;
170174
vertexBuffer[vertexOffset++] = umax;
171175
vertexBuffer[vertexOffset++] = vmax;
176+
vertexBufferU32[vertexOffset++] = vertexColor;
172177
vertexBuffer[vertexOffset++] = alpha;
173178

174179
vertexBuffer[vertexOffset++] = tx3;
175180
vertexBuffer[vertexOffset++] = ty3;
176181
vertexBuffer[vertexOffset++] = umax;
177182
vertexBuffer[vertexOffset++] = vmin;
183+
vertexBufferU32[vertexOffset++] = vertexColor;
178184
vertexBuffer[vertexOffset++] = alpha;
179185
}
180186
};

0 commit comments

Comments
 (0)