The following steps describe how a simple object is drawn in the viewport.
Below is the code from the SimpleObject implementation of BaseObject::Display().
int SimpleObject::Display(TimeValue t,
INode* inode,
ViewExp *vpt,
int flags)
{
if (!OKtoDisplay(t)) return 0;
GraphicsWindow *gw = vpt->getGW();
Matrix3 mat = inode->GetObjectTM(t);
UpdateMesh(t); // UpdateMesh just calls BuildMesh() if req'd at time t.
gw->setTransform(mat);
mesh.render( gw, inode->Mtls(),
(flags&USE_DAMAGE_RECT) ? &vpt->GetDammageRect() : NULL, COMP_ALL,
inode->NumMtls());
return(0);
}