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); }