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