void
renderTextureMesh(RenderState renderState, Int16List ixList, Float32List vxList, num r, num g, num b, num a)
Source
void renderTextureMesh(
RenderState renderState,
Int16List ixList, Float32List vxList,
num r, num g, num b, num a) {
var matrix = renderState.globalMatrix;
var alpha = renderState.globalAlpha;
var ixListCount = ixList.length;
var vxListCount = vxList.length >> 2;
// check buffer sizes and flush if necessary
var ixData = renderBufferIndex.data;
var ixPosition = renderBufferIndex.position;
if (ixPosition + ixListCount >= ixData.length) flush();
var vxData = renderBufferVertex.data;
var vxPosition = renderBufferVertex.position;
if (vxPosition + vxListCount * 8 >= vxData.length) flush();
var ixIndex = renderBufferIndex.position;
var vxIndex = renderBufferVertex.position;
var vxCount = renderBufferVertex.count;
// copy index list
for (var i = 0; i < ixListCount; i++) {
ixData[ixIndex + i] = vxCount + ixList[i];
}
renderBufferIndex.position += ixListCount;
renderBufferIndex.count += ixListCount;
// copy vertex list
var ma = matrix.a;
var mb = matrix.b;
var mc = matrix.c;
var md = matrix.d;
var mx = matrix.tx;
var my = matrix.ty;
var colorA = a * alpha;
var colorR = r * colorA;
var colorG = g * colorA;
var colorB = b * colorA;
for (var i = 0, o = 0; i < vxListCount; i++, o += 4) {
num x = vxList[o + 0];
num y = vxList[o + 1];
vxData[vxIndex + 0] = mx + ma * x + mc * y;
vxData[vxIndex + 1] = my + mb * x + md * y;
vxData[vxIndex + 2] = vxList[o + 2];
vxData[vxIndex + 3] = vxList[o + 3];
vxData[vxIndex + 4] = colorR;
vxData[vxIndex + 5] = colorG;
vxData[vxIndex + 6] = colorB;
vxData[vxIndex + 7] = colorA;
vxIndex += 8;
}
renderBufferVertex.position += vxListCount * 8;
renderBufferVertex.count += vxListCount;
}