Basically what I want to implement are three display modes for the user: Wireframe, Normal shaded and shaded by my custom shader. Setting up a custom shader program works well (aisShape->Attributes()->ShadingAspect()->Aspect()->SetShaderProgram(prog)). But when for example switching from custom shading to normal shading mode, I need to remove the custom program again from the AIS_Shape. But how do you correctly detach this program from the AIS_Shape? I tried to pass a NULL handle, which lead to other impacts when switching back again to the shader program (shapes drawn black).