- vector<GL::SelectRecord> select_buf;
- GL::select_buffer(select_buf);
- GL::render_mode(GL::SELECT);
-
- {
- GL::PushMatrix push_mat;
- GL::load_identity();
-
- GL::ClipPlane(1, 0, x-size, 0).apply_to(0);
- GL::ClipPlane(-1, 0, -x-size, 0).apply_to(1);
- GL::ClipPlane(0, 1, y-size, 0).apply_to(2);
- GL::ClipPlane(0, -1, -y-size, 0).apply_to(3);
- }
-
- scene.render(0);
-
- GL::ClipPlane::disable(0);
- GL::ClipPlane::disable(1);
- GL::ClipPlane::disable(2);
- GL::ClipPlane::disable(3);
-
- GL::render_mode(GL::RENDER);
- Track3D *track = 0;
- unsigned track_depth = numeric_limits<unsigned>::max();
- for(vector<GL::SelectRecord>::iterator i=select_buf.begin(); i!=select_buf.end(); ++i)
- if(i->min_depth<track_depth && !i->names.empty())
- {
- track = reinterpret_cast<Track3D *>(i->names.back());
- track_depth = i->min_depth;
- }
-
- return track;