I’m playing a bit with a vtkSobelGradientMagnitudePass pass using python and vtk 9.0.1 on Windows 10.
When I resize my window I get the following error:
“ERROR: In …\Rendering\OpenGL2\vtkOpenGLFramebufferObject.cxx, line 523
vtkOpenGLFramebufferObject (000001B3DB82E720): The framebuffer has mismatched attachments.”
Is this a bug or am I doing something wrong? I must say I’m having quite a hard time figuring out how to set up all the passes correctly.
#!/usr/bin/env python
import vtk
def main():
colors = vtk.vtkNamedColors()
# Create a rendering window and renderer.
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.SetWindowName("Cube")
renWin.AddRenderer(ren)
# Create a renderwindowinteractor.
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
# Create cube.
cube = vtk.vtkCubeSource()
cube.SetXLength(5)
cube.SetYLength(5)
cube.SetZLength(5)
cube.Update()
# mapper
cubeMapper = vtk.vtkPolyDataMapper()
cubeMapper.SetInputData(cube.GetOutput())
# Actor.
cubeActor = vtk.vtkActor()
cubeActor.SetMapper(cubeMapper)
cubeActor.GetProperty().SetColor(colors.GetColor3d("Silver"))
# Assign actor to the renderer.
ren.AddActor(cubeActor)
# Create cube.
cube = vtk.vtkCubeSource()
cube.SetXLength(2)
cube.SetYLength(2)
cube.SetZLength(2)
cube.Update()
# mapper
cubeMapper = vtk.vtkPolyDataMapper()
cubeMapper.SetInputData(cube.GetOutput())
# Actor.
cubeActor = vtk.vtkActor()
cubeActor.SetMapper(cubeMapper)
cubeActor.SetPosition(3.2,0,0)
cubeActor.GetProperty().SetColor(colors.GetColor3d("Silver"))
# Assign actor to the renderer.
ren.AddActor(cubeActor)
# And a sphere
# Create cube.
cube = vtk.vtkSphereSource()
cube.SetRadius(2)
cube.Update()
# mapper
cubeMapper = vtk.vtkPolyDataMapper()
cubeMapper.SetInputData(cube.GetOutput())
# Actor.
cubeActor = vtk.vtkActor()
cubeActor.SetMapper(cubeMapper)
cubeActor.SetPosition(0,3.2, 0)
cubeActor.GetProperty().SetColor(colors.GetColor3d("Silver"))
# Assign actor to the renderer.
ren.AddActor(cubeActor)
ren.ResetCamera()
ren.GetActiveCamera().Azimuth(30)
ren.GetActiveCamera().Elevation(30)
ren.ResetCameraClippingRange()
ren.SetBackground(colors.GetColor3d("Blue"))
# Add vtkSobelGradientMagnitudePass
basicPasses = vtk.vtkRenderStepsPass()
cameraPass = vtk.vtkCameraPass()
cameraPass.SetDelegatePass(basicPasses)
sobel = vtk.vtkSobelGradientMagnitudePass()
sobel.SetDelegatePass(cameraPass)
ren.SetPass(sobel)
# Enable user interface interactor.
iren.Initialize()
renWin.Render()
iren.Start()
if __name__ == "__main__":
main()