public void renderTo(Rendering rendering) {
    //
    //  Sort by distance from back to front, stuff into the array, and render
    //  as a batch.
    final Sorting <Star> sorting = new Sorting <Star> () {
      public int compare(Star a, Star b) {
        if (a.depth > b.depth) return 1 ;
        if (a.depth < b.depth) return -1 ;
        return 0 ;
      }
    } ;
    
    transform.setIdentity() ;
    transform.rotateX(fieldElevate) ;
    transform.rotateZ(fieldRotate ) ;
    
    final Vec3D tV = new Vec3D() ; for (Star s : allStars) {
      s.depth = transform.trans(tV.setTo(s.coords)).z ;
      sorting.add(s) ;
    }
    
    MeshBuffer.beginRecord() ;
    
    for (Star star : sorting) {
      final Vec3D p = transform.trans(tV.setTo(star.coords)) ;
      final float s = star.magnitude, h = s / 2 ;
      final float UV[] = star.model.framesUV()[0] ;
      
      MeshBuffer.recordSimpleQuad(p.x - h, p.y - h, s, p.z, UV) ;
    }
    final Object geom[] = MeshBuffer.compileRecord() ;
    
    geomBuffer.update(
      (float[]) geom[0], (float[]) geom[1], (float[]) geom[2]
    ) ;
    
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE) ;
    
    GL11.glColor4f(1.0f, 1.0f, 1, 0.5f) ;
    STAR_TEX.bindTex() ;
    geomBuffer.renderTo(rendering) ;
    
    GL11.glColor4f(1.0f, 1.0f, 1, 1.0f) ;
    ALL_STAR_TEX.bindTex() ;
    geomBuffer.renderTo(rendering) ;
    
    
    GL11.glColor4f(0.8f, 0.8f, 1, 0.25f) ;
    final Mat3D oppZ = new Mat3D().setTo(transform) ;
    axisWithTransform(oppZ, SECTORS_TEX, maxDist) ;
    
    GL11.glColor4f(0.8f, 1, 1, 0.25f) ;
    final Mat3D oppX = new Mat3D().setTo(transform) ;
    oppX.rotateY((float) Math.PI / 2) ;
    axisWithTransform(oppX, AXIS_TEX, maxDist * 0.5f) ;
    
    GL11.glColor4f(1, 0.8f, 1, 0.25f) ;
    final Mat3D oppY = new Mat3D().setTo(transform) ;
    oppY.rotateX((float) Math.PI / 2) ;
    axisWithTransform(oppY, AXIS_TEX, maxDist * 0.5f) ;
    
    GL11.glColor4f(1, 1, 1, 1) ;
  }