If you don't need dynamic subdivision, store the resulting mesh. Either use display lists, or use GLU_NURBS_TESSELLATOR mode with callbacks which store the data, or write your own NURBS tessellator....