renderTriangle method
void
renderTriangle()
Implementation
void renderTriangle(RenderState renderState, num x1, num y1, num x2, num y2,
num x3, num y3, int color) {
final matrix = renderState.globalMatrix;
final alpha = renderState.globalAlpha;
const indexCount = 3;
const vertexCount = 3;
// check buffer sizes and flush if necessary
final ixData = renderBufferIndex.data;
final ixPosition = renderBufferIndex.position;
if (ixPosition + indexCount >= ixData.length) flush();
final vxData = renderBufferVertex.data;
final vxPosition = renderBufferVertex.position;
if (vxPosition + vertexCount * 6 >= vxData.length) flush();
final ixIndex = renderBufferIndex.position;
final vxIndex = renderBufferVertex.position;
final vxCount = renderBufferVertex.count;
// fill index buffer
ixData[ixIndex + 0] = vxCount + 0;
ixData[ixIndex + 1] = vxCount + 1;
ixData[ixIndex + 2] = vxCount + 2;
renderBufferIndex.position += indexCount;
renderBufferIndex.count += indexCount;
// fill vertex buffer
final ma = matrix.a;
final mb = matrix.b;
final mc = matrix.c;
final md = matrix.d;
final mx = matrix.tx;
final my = matrix.ty;
const colorScale = 1 / 255.0;
final colorA = colorScale * colorGetA(color) * alpha;
final colorR = colorScale * colorGetR(color) * colorA;
final colorG = colorScale * colorGetG(color) * colorA;
final colorB = colorScale * colorGetB(color) * colorA;
vxData[vxIndex + 00] = x1 * ma + y1 * mc + mx;
vxData[vxIndex + 01] = x1 * mb + y1 * md + my;
vxData[vxIndex + 02] = colorR;
vxData[vxIndex + 03] = colorG;
vxData[vxIndex + 04] = colorB;
vxData[vxIndex + 05] = colorA;
vxData[vxIndex + 06] = x2 * ma + y2 * mc + mx;
vxData[vxIndex + 07] = x2 * mb + y2 * md + my;
vxData[vxIndex + 08] = colorR;
vxData[vxIndex + 09] = colorG;
vxData[vxIndex + 10] = colorB;
vxData[vxIndex + 11] = colorA;
vxData[vxIndex + 12] = x3 * ma + y3 * mc + mx;
vxData[vxIndex + 13] = x3 * mb + y3 * md + my;
vxData[vxIndex + 14] = colorR;
vxData[vxIndex + 15] = colorG;
vxData[vxIndex + 16] = colorB;
vxData[vxIndex + 17] = colorA;
renderBufferVertex.position += vertexCount * 6;
renderBufferVertex.count += vertexCount;
}