<div>Hello,</div><div><br></div><div>i am totally new to VTK. First of all, I was really surprised how easy it is to setup VTK with Java. I compiled it on Linux and OS X. Well done!</div><div><br></div><div>Now my question: as I am interested in offscreen rendering I tried the example below. It worked but unfortunately an empty window was shown. I didn&#39;t expect a window. Do I really have to completely switch hardware acceleration off by using <span style="line-height:19px;font-size:13px;font-family:sans-serif">VTK_OPENGL_HAS_OSMESA? Couldn&#39;t I just hide the window? If it is possible, how do I do that?</span></div>


<div><span style="line-height:19px;font-size:13px;font-family:sans-serif"><br></span></div><div><span style="line-height:19px;font-size:13px;font-family:sans-serif">My intention is to write a pure Swing component that uses offscreen rendering. I know that this will slow down everything. But my views will be relatively small in size (e.g. 300x200 pixel). Thus, the performance should be ok as long as getting the native memory isn&#39;t too time consuming. </span><span style="font-family:sans-serif;font-size:13px;line-height:19px">I have seen that there are some approaches that also tried that. But all code samples I have seen looped over the vtk array to copy it to an image. </span><span style="font-family:sans-serif;font-size:13px;line-height:19px">This is definitely too slow. But using WritableRaster, DataBuffer etc. should help.</span></div>


<div><span style="line-height:19px;font-size:13px;font-family:sans-serif"><br></span></div><div><font face="sans-serif"><span style="line-height:19px">Thanks for your help!</span></font></div>
<div><font face="sans-serif"><span style="line-height:19px"><br></span></font></div><div><font face="sans-serif"><span style="line-height:19px">Regards,</span></font></div><div><font face="sans-serif"><span style="line-height:19px">Michael</span></font></div>


<div><br></div><div>// </div><div>// code originally from <a href="http://www.vtk.org/Wiki/VTK/Examples/Cxx/Utilities/OffScreenRendering" target="_blank">http://www.vtk.org/Wiki/VTK/Examples/Cxx/Utilities/OffScreenRendering</a></div>

<div>
//</div><div>import vtk.*;</div><div><br></div><div>/**</div><div> *</div><div> * @author Michael Hoffer <a href="mailto:info@michaelhoffer.de" target="_blank">info@michaelhoffer.de</a></div><div> */</div><div>public class VTKOffscreenSample {</div>


<div><br></div><div>    public static void main(String[] args) {</div><div>        </div><div>        loadLibraries();</div><div>        </div><div>        // Setup offscreen rendering</div><div>        vtkGraphicsFactory graphics_factory = new vtkGraphicsFactory();</div>


<div>        graphics_factory.SetOffScreenOnlyMode(1);</div><div>        graphics_factory.SetUseMesaClasses(1);</div><div><br></div><div>        vtkImagingFactory imaging_factory = new vtkImagingFactory();</div><div>        imaging_factory.SetUseMesaClasses(1);</div>


<div><br></div><div>        // Create a sphere</div><div>        vtkSphereSource sphereSource = new vtkSphereSource();</div><div><br></div><div>        // Create a mapper and actor</div><div>        vtkPolyDataMapper mapper = new vtkPolyDataMapper();</div>


<div>        mapper.SetInputConnection(sphereSource.GetOutputPort());</div><div><br></div><div>        vtkActor actor = new vtkActor();</div><div>        actor.SetMapper(mapper);</div><div><br></div><div>        // A renderer and render window</div>


<div>        vtkRenderer renderer = new vtkRenderer();</div><div>        vtkRenderWindow renderWindow = new vtkRenderWindow();</div><div>        renderWindow.SetOffScreenRendering(1);</div><div>        renderWindow.AddRenderer(renderer);</div>


<div><br></div><div>        // Add the actors to the scene</div><div>        renderer.AddActor(actor);</div><div>        renderer.SetBackground(1, 1, 1); // Background color white</div><div><br></div><div>        renderWindow.Render();</div>


<div><br></div><div>        vtkWindowToImageFilter windowToImageFilter = new vtkWindowToImageFilter();</div><div>        windowToImageFilter.SetInput(renderWindow);</div><div>        windowToImageFilter.Update();</div><div>


<br></div><div>        vtkPNGWriter writer = new vtkPNGWriter();</div><div>        writer.SetFileName(&quot;screenshot.png&quot;);</div><div>        writer.SetInputConnection(windowToImageFilter.GetOutputPort());</div><div>


        writer.Write();</div><div>    }</div><div>    </div><div>    private static void loadLibraries() {</div><div><br></div><div>        if (!vtkNativeLibrary.LoadAllNativeLibraries()) {</div><div>            for (vtkNativeLibrary lib : vtkNativeLibrary.values()) {</div>


<div>                if (!lib.IsLoaded()) {</div><div>                    System.out.println(lib.GetLibraryName() + &quot; not loaded&quot;);</div><div>                }</div><div>            }</div><div><br></div><div>            System.out.println(&quot;Make sure the search path is correct: &quot;);</div>


<div>            System.out.println(System.getProperty(&quot;java.library.path&quot;));</div><div>        }</div><div><br></div><div>        vtkNativeLibrary.DisableOutputWindow(null);</div><div>    }</div><div>}</div><div>


<br></div>