vtkPolyDataToImageStencil issue

Thank you so much for the fast reply and it works well!
So, the thing is I’m building my own polydata for the input. Here’s the code. I thought it was the polydata thing that makes this not work. But maybe I still miss some update call here?

vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
double origin[3];
m_OriginalImage->GetOrigin(origin);
double offsetx[14] = { 0, 5, 10, 15, 15, 10, 5, 0, -5, -10, -15, -15, -10, -5 };
double offsety[14] = { 0, 5, 10, 15, 25, 20, 15, 10, 15, 20, 25, 15, 10 ,5 };
for (int i = 0; i < 14; ++i) {
	points->InsertNextPoint(origin[0] + offsetx[i], origin[1] + offsety[i], origin[2]);
}
for (int i = 0; i < 14; ++i) {
	points->InsertNextPoint(origin[0] + offsetx[i], origin[1] + offsety[i], origin[2] + 20);
}

	// Generate the polygon poly data
	vtkIdType numPoints = points->GetNumberOfPoints();
	vtkSmartPointer<vtkCellArray> polygons = vtkSmartPointer<vtkCellArray>::New();
	vtkSmartPointer<vtkPolygon> boundaryPolygon1 = vtkSmartPointer<vtkPolygon>::New();
	vtkSmartPointer<vtkPolygon> boundaryPolygon2 = vtkSmartPointer<vtkPolygon>::New();
	int oneSidePointsNum = numPoints / 2;
	boundaryPolygon1->GetPointIds()->SetNumberOfIds(oneSidePointsNum);
	boundaryPolygon2->GetPointIds()->SetNumberOfIds(oneSidePointsNum);
	for (vtkIdType i = 0; i < oneSidePointsNum; i++) {
		boundaryPolygon1->GetPointIds()->SetId(i, i);
		boundaryPolygon2->GetPointIds()->SetId(i, i + oneSidePointsNum);
	}
	polygons->InsertNextCell(boundaryPolygon1);
	polygons->InsertNextCell(boundaryPolygon2);

	for (vtkIdType i = 0; i < oneSidePointsNum; i++) {
		vtkIdType ids[4] = { i, (i + 1) % 14, (i + 1) % 14 + 14, i + 14 };
		polygons->InsertNextCell(4, ids);
	}
	polygons->Modified();

	// Create a PolyData
	vtkSmartPointer<vtkPolyData> polygonPolyData = vtkSmartPointer<vtkPolyData>::New();
	polygonPolyData->SetPoints(points);
	polygonPolyData->SetPolys(polygons);
	polygonPolyData->Modified();

	// Generate the stencil according to the poly data
	vtkSmartPointer<vtkPolyDataToImageStencil> poly2Stencil = vtkSmartPointer<vtkPolyDataToImageStencil>::New();
	poly2Stencil->SetInputData(polygonPolyData);

The rest is the same