1 /*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: TestOptiXWindow.cxx
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14 =========================================================================*/
15
16 #include "vtkSmartPointer.h"
17
18 #include "vtkActor.h"
19 #include "vtkCamera.h"
20 #include "vtkLight.h"
21 #include "vtkPolyDataMapper.h"
22 #include "vtkProperty2D.h"
23 #include "vtkRegressionTestImage.h"
24 #include "vtkRenderer.h"
25 #include "vtkRenderWindow.h"
26 #include "vtkRenderWindowInteractor.h"
27 #include "vtkTextProperty.h"
28 #include "vtkSphereSource.h"
29 #include "vtkNew.h"
30 #include "vtkElevationFilter.h"
31 #include "vtkOptiXWindowNode.h"
32 #include "vtkImageActor.h"
33 #include "vtkImageData.h"
34 #include "vtkPointData.h"
35 #include "vtkImageMapper3D.h"
36
37 #include "vtkTestUtilities.h"
38
TestOptiXWindow(int argc,char * argv[])39 int TestOptiXWindow( int argc, char *argv[] )
40 {
41 vtkNew<vtkSphereSource> sphere;
42 sphere->SetThetaResolution(8);
43 sphere->SetPhiResolution(8);
44 vtkNew<vtkElevationFilter> elev;
45 elev->SetInputConnection(sphere->GetOutputPort(0));
46
47 vtkNew<vtkPolyDataMapper> sphereMapper;
48 sphereMapper->SetInputConnection(elev->GetOutputPort(0));
49 vtkNew<vtkActor> sphereActor;
50 sphereActor->SetMapper(sphereMapper);
51
52 vtkSmartPointer<vtkLight> light1 = vtkSmartPointer<vtkLight>::New();
53
54 // Create the RenderWindow, Renderer and all Actors
55 vtkSmartPointer<vtkRenderer> ren1 =
56 vtkSmartPointer<vtkRenderer>::New();
57 ren1->AddLight(light1);
58
59 vtkSmartPointer<vtkRenderWindow> renWin =
60 vtkSmartPointer<vtkRenderWindow>::New();
61 renWin->AddRenderer( ren1 );
62
63 // Add the actors to the renderer, set the background and size
64 //
65 ren1->AddActor( sphereActor );
66 ren1->SetBackground( .2,.3,.4 );
67
68 // render the image
69 renWin->SetWindowName( "VTK - Scalar Bar options" );
70 renWin->SetSize( 600, 500 );
71
72 vtkNew<vtkOptiXWindowNode> owindow;
73 owindow->SetRenderable(renWin);
74 owindow->TraverseAllPasses();
75
76 // now get the result and display it
77 int *size = owindow->GetSize();
78 vtkNew<vtkImageData> image;
79 image->SetDimensions(size[0], size[1], 1);
80 image->GetPointData()->SetScalars(owindow->GetColorBuffer());
81
82 // Create a new image actor and remove the geometry one
83 vtkNew<vtkImageActor> imageActor;
84 imageActor->GetMapper()->SetInputData(image);
85 vtkNew<vtkRenderer> renderer;
86 renderer->AddActor(imageActor);
87
88 // Background color white to distinguish image boundary
89 renderer->SetBackground(1, 1, 1);
90 vtkNew<vtkRenderWindow> renderWindow;
91 renderWindow->AddRenderer(renderer);
92
93 vtkNew<vtkRenderWindowInteractor> renderWindowInteractor;
94 renderWindowInteractor->SetRenderWindow(renderWindow);
95 renderWindow->Render();
96 renderer->ResetCamera();
97 renderWindow->Render();
98 int retVal = vtkRegressionTestImage(renderWindow);
99 if (retVal == vtkRegressionTester::DO_INTERACTOR)
100 {
101 renderWindowInteractor->Start();
102 }
103
104 return !retVal;
105 }
106