A question about vtkOpenGLHardwareSelector::GeneratePolygonSelection

I use this method to get the visible surface of the ticked polygon data, but the output of the result is weird It looks like a part is missing, hope for help,

auto selector = vtkSmartPointer::New();
selector->SetRenderer(this->m_render);
const int* wsize = this->m_render->GetSize();
const int* origin = this->m_render->GetOrigin();
selector->SetArea(origin[0], origin[1], origin[0] + wsize[0] - 1, origin[1] + wsize[1] - 1);
selector->SetFieldAssociation(vtkDataObject::FIELD_ASSOCIATION_CELLS);
if (selector->CaptureBuffers())
{
auto sel = selector->GeneratePolygonSelection(polygon.data(), res_pts.size());

  auto extractSelection = vtkSmartPointer<vtkExtractSelection>::New();
  extractSelection->SetInputData(0, this->m_poly_data);
  extractSelection->SetInputData(1, sel);
  extractSelection->Update();

}

The polygon data is the convex hull from opencv The point set used is the trajectory of the mouse

Rendering/Core/Testing/Cxx/TestPolygonSelection.cxx · master · VTK / VTK · GitLab (kitware.com) This is my reference