paint method
void
paint(
- DiTreDiConfig config,
- DiTreDiController controller,
- PaintViewPort viewPort,
- Face3D model,
- Matrix4 matrix,
- int vertexIndex,
- Float32List zIndices,
- Int32List colors,
- Float32List vertices,
override
Fills the buffer with the Model3D data.
Implementation
@override
void paint(
DiTreDiConfig config,
DiTreDiController controller,
PaintViewPort viewPort,
Face3D model,
Matrix4 matrix,
int vertexIndex,
Float32List zIndices,
Int32List colors,
Float32List vertices) {
_t.copyFrom(model.triangle);
matrix.perspectiveTransform(_t.point0);
matrix.perspectiveTransform(_t.point1);
matrix.perspectiveTransform(_t.point2);
if (_shouldDraw(viewPort, _t)) {
// z-index
zIndices[vertexIndex ~/ 3] =
(_t.point0.z + _t.point1.z + _t.point2.z) / 3;
// color
final originColor = _getFaceColor(model, config, controller, _t);
colors[vertexIndex + 0] = originColor;
colors[vertexIndex + 1] = originColor;
colors[vertexIndex + 2] = originColor;
} else {
colors[vertexIndex + 0] = 0;
colors[vertexIndex + 1] = 0;
colors[vertexIndex + 2] = 0;
_t.point0.setZero();
_t.point1.setZero();
_t.point2.setZero();
}
// vertex
final pointIndex = vertexIndex * 2;
vertices[pointIndex + 0] = _t.point0.x;
vertices[pointIndex + 1] = _t.point0.y;
vertices[pointIndex + 2] = _t.point1.x;
vertices[pointIndex + 3] = _t.point1.y;
vertices[pointIndex + 4] = _t.point2.x;
vertices[pointIndex + 5] = _t.point2.y;
}