<div dir="ltr">The follow code will reproduce the problem - change the line commented out near the top to switch between GPU and RayCast rendering to see it working and not working.  Let me know if you need a CMakefile and DICOM files (I assume you have DICOM files and can plug this code into an existing project if needed )<div><br></div><div>







<p class="">#include <span class=""><string></span></p>
<p class="">#include <span class=""><fstream></span></p>
<p class=""><span class="">#include </span><vtkSmartPointer.h><br></p>
<p class=""><span class="">#include </span><vtkImageSlabReslice.h></p>
<p class=""><span class="">#include </span><vtkRenderer.h></p>
<p class=""><span class="">#include </span><vtkRenderWindow.h></p>
<p class=""><span class="">#include </span><vtkPiecewiseFunction.h></p>
<p class=""><span class="">#include </span><vtkColorTransferFunction.h></p>
<p class=""><span class="">#include </span><vtkImageData.h></p>
<p class=""><span class="">#include </span><vtkMatrix4x4.h></p>
<p class=""><span class="">#include </span><vtkWindowToImageFilter.h></p>
<p class=""><span class="">#include </span><vtkDICOMImageReader.h></p>
<p class=""><span class="">#include </span><vtkSmartVolumeMapper.h></p>
<p class=""><span class="">#include </span><vtkJPEGWriter.h></p>
<p class=""><span class="">#include </span><vtkCamera.h></p>
<p class=""><span class="">#include </span><vtkVolumeProperty.h></p>
<p class=""><span class="">#include </span><vtkUnsignedCharArray.h></p>
<p class=""><br></p>
<p class=""><span class="">int</span> main(<span class="">int</span> argc, <span class="">char</span>** argv)<br></p>
<p class="">{</p>
<p class=""><br></p>
<p class=""><span class="">    </span>//int renderMode =vtkSmartVolumeMapper::RayCastRenderMode; // this works</p>
<p class=""><span class="">    </span><span class="">int</span><span class=""> renderMode =</span><span class="">vtkSmartVolumeMapper</span><span class="">::</span><span class="">GPURenderMode</span><span class="">; </span>// this generates black image</p>
<p class="">    </p>
<p class=""><span class="">    </span>// Read the DICOM Data</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkDICOMImageReader<span class="">> reader = </span>vtkSmartPointer<span class=""><</span>vtkDICOMImageReader<span class="">>::</span><span class="">New</span><span class="">();</span></p>
<p class=""><span class="">    reader-></span><span class="">SetDirectoryName</span><span class="">(</span>"/Users/chafey/DICOM/Volume3"<span class="">);</span></p>
<p class="">    reader-><span class="">Update</span>();</p>
<p class="">    <span class="">vtkSmartPointer</span><<span class="">vtkImageData</span>> imageData(reader-><span class="">GetOutput</span>());</p>
<p class="">    </p>
<p class=""><span class="">    </span>// Translate origin to center of volume</p>
<p class="">    <span class="">double</span> xSpacing, ySpacing, zSpacing;</p>
<p class="">    imageData-><span class="">GetSpacing</span>(xSpacing, ySpacing, zSpacing);</p>
<p class="">    <span class="">int</span>* dims = imageData-><span class="">GetDimensions</span>();</p>
<p class="">    <span class="">double</span> xCenter = dims[<span class="">0</span>] * xSpacing / <span class="">2.0</span>;</p>
<p class="">    <span class="">double</span> yCenter = dims[<span class="">1</span>] * ySpacing / <span class="">2.0</span>;</p>
<p class="">    <span class="">double</span> zCenter = dims[<span class="">2</span>] * zSpacing / <span class="">2.0</span>;</p>
<p class="">    imageData-><span class="">SetOrigin</span>(-xCenter, -yCenter, -zCenter);</p>
<p class=""><br></p>
<p class=""><span class="">     </span>// Setup the renderer for offscreen rendering</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkRenderer<span class="">>  renderer = </span>vtkSmartPointer<span class=""><</span>vtkRenderer<span class="">>::</span><span class="">New</span><span class="">();</span></p>
<p class="">    </p>
<p class=""><span class="">    </span>// Setup the render window</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkRenderWindow<span class="">> render_window = </span>vtkSmartPointer<span class=""><</span>vtkRenderWindow<span class="">>::</span><span class="">New</span><span class="">();</span></p>
<p class="">    render_window-><span class="">SetOffScreenRendering</span>(<span class="">1</span>);</p>
<p class="">    render_window-><span class="">AddRenderer</span>(renderer);</p>
<p class="">    render_window-><span class="">SetSize</span>(<span class="">512</span>, <span class="">512</span>);</p>
<p class="">    </p>
<p class=""><span class="">    </span>// Setup the volume mapper</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkSmartVolumeMapper<span class="">> volume_mapper = </span>vtkSmartPointer<span class=""><</span>vtkSmartVolumeMapper<span class="">>::</span><span class="">New</span><span class="">();</span></p>
<p class="">    volume_mapper-><span class="">SetRequestedRenderMode</span>(renderMode);</p>
<p class="">    volume_mapper-><span class="">SetInputData</span>(imageData);</p>
<p class="">    </p>
<p class=""><br></p>
<p class=""><span class="">    </span>// Setup the volume</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkVolume<span class="">> volume = </span>vtkSmartPointer<span class=""><</span>vtkVolume<span class="">>::</span><span class="">New</span><span class="">();</span></p>
<p class="">    volume-><span class="">SetMapper</span>(volume_mapper);</p>
<p class="">    renderer-><span class="">AddViewProp</span>(volume);</p>
<p class="">    </p>
<p class=""><span class="">    </span>// Render the image</p>
<p class="">    render_window-><span class="">Render</span>();</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkWindowToImageFilter<span class="">> windowToImageFilter = </span>vtkSmartPointer<span class=""><</span>vtkWindowToImageFilter<span class="">>::</span><span class="">New</span><span class="">();</span></p>
<p class="">    windowToImageFilter-><span class="">SetInput</span>(render_window);</p>
<p class="">    windowToImageFilter-><span class="">Update</span>();</p>
<p class="">    </p>
<p class=""><span class="">    </span>// Create a JPEG in memory</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkJPEGWriter<span class="">> writer = </span>vtkSmartPointer<span class=""><</span>vtkJPEGWriter<span class="">>::</span><span class="">New</span><span class="">();</span></p>
<p class="">    writer-><span class="">WriteToMemoryOn</span>();</p>
<p class="">    writer-><span class="">SetInputConnection</span>(windowToImageFilter-><span class="">GetOutputPort</span>());</p>
<p class="">    writer-><span class="">Write</span>();</p>
<p class=""><span class="">    </span>vtkSmartPointer<span class=""><</span>vtkUnsignedCharArray<span class="">> dataPtr = writer-></span><span class="">GetResult</span><span class="">();</span></p>
<p class="">    dataPtr-><span class="">Squeeze</span>();</p>
<p class="">    </p>
<p class=""><span class="">    </span>// write the jpeg to disk</p>
<p class="">    <span class="">ofstream</span> myFile (<span class="">"image.jpg"</span>, <span class="">ios</span>::<span class="">out</span> | <span class="">ios</span>::<span class="">binary</span>);</p>
<p class="">    myFile.<span class="">write</span> ((<span class="">const</span> <span class="">char</span>*)dataPtr-><span class="">GetPointer</span>(<span class="">0</span>), dataPtr-><span class="">GetSize</span>());</p>
<p class=""> </p>
<p class="">    <span class="">return</span> <span class="">0</span>;</p>
<p class="">}</p></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 25, 2014 at 7:42 AM, Aashish Chaudhary <span dir="ltr"><<a href="mailto:aashish.chaudhary@kitware.com" target="_blank">aashish.chaudhary@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Thu, Sep 25, 2014 at 8:38 AM, Chris Hafey <span dir="ltr"><<a href="mailto:chafey@gmail.com" target="_blank">chafey@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">No errors on the console.  I will work on a standalone example.  Can you please clarify whether or not I should be using mesa / osmesa for GPU rendering on Mac OS X?</div></blockquote><div><br></div></span><div>In theory your regular driver should work with the offscreen rendering setting. As per my understanding, that will just not open the window but will create a context in which the rendering is performed.  But if the image is black and if it is not if you don't set that flag then it means the context was not created properly. VTK should have given you a error but may be it is fooled by the system itself. </div><div><br></div><div>You can try osmesa, make sure that VTK detects it, and see if that works. </div><span class="HOEnZb"><font color="#888888"><div><br></div><div>- Aashish  </div></font></span><div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span><font color="#888888"><div><br></div><div>Chris</div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 25, 2014 at 7:37 AM, Aashish Chaudhary <span dir="ltr"><<a href="mailto:aashish.chaudhary@kitware.com" target="_blank">aashish.chaudhary@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">This is good to know. Do you get any errors on the console? A standalone example  will be nice. <span><font color="#888888"><div><br></div><div>- Aashish</div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 25, 2014 at 8:32 AM, Chris Hafey <span dir="ltr"><<a href="mailto:chafey@gmail.com" target="_blank">chafey@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I am enabling off screen rendering by calling SetOffScreenRendering(1) on the vtkRenderWindow.  Should I be using osmesa?  I can create a standalone example to reproduce if needed.<span><font color="#888888"><div><br></div><div>Chris</div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 25, 2014 at 7:21 AM, Aashish Chaudhary <span dir="ltr"><<a href="mailto:aashish.chaudhary@kitware.com" target="_blank">aashish.chaudhary@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">No problem. How did you enable the offscreen?  Can you post your code somewhere? <div><br></div><div>Thanks,</div><div>Aashish</div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 25, 2014 at 8:05 AM, Chris Hafey <span dir="ltr"><<a href="mailto:chafey@gmail.com" target="_blank">chafey@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Aashish,<div>  Forgive my ignorance but I don't know much about osmesa or whether I am using it.  I am using VTK as built by homebrew and don't see any options related to osmesa.  I have not installed osmesa on the machine.  No errors or warnings are issued on the console.</div><span><font color="#888888"><div><br></div><div>Chris</div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 25, 2014 at 6:46 AM, Aashish Chaudhary <span dir="ltr"><<a href="mailto:aashish.chaudhary@kitware.com" target="_blank">aashish.chaudhary@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi Chris, </div><div><br></div>Are you using osmesa for the offscreen rendering? Are you getting any error on the console? <div><br></div><div>Thanks</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Thu, Sep 25, 2014 at 7:32 AM, Chris Hafey <span dir="ltr"><<a href="mailto:chafey@gmail.com" target="_blank">chafey@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">VTK 6.1.0</span><div style="font-family:arial,sans-serif;font-size:13px">Mac OS X Mavericks 10.9.5</div><div style="font-family:arial,sans-serif;font-size:13px">Macbook Pro 2012 Retina with nVidia GeForce GT 650M 1024 MB</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">My program uses VTK to do off screen volume rendering of medical images.  I suspect this is a bug in VTK and not my software because:</div><div style="font-family:arial,sans-serif;font-size:13px">1) GPURenderMode works fine on Windows (both in a VM running on same Mac and on two other Windows 7 boxes with an nVidia GPUs)</div><div style="font-family:arial,sans-serif;font-size:13px">2) RayCastRenderMode works fine on Mac OS X</div><div style="font-family:arial,sans-serif;font-size:13px">3) TextureRenderMode works fine on Mac OS X</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I tried searching the mailing list and google and couldn't find anything.  The rendering code is about as basic as it can be - it simply sets the color, opacity, clip planes and matrix.  Any ideas on what I might be doing wrong or how I can debug?</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Thanks</div><span><font color="#888888"><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Chris Hafey</div><div style="font-family:arial,sans-serif;font-size:13px"></div></font></span></div>
<br></div></div>_______________________________________________<br>Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="trebuchet ms, sans-serif"><i>| Aashish Chaudhary <br>| Technical Leader         <br>| Kitware Inc.            <br></i></font><div><i><font face="trebuchet ms, sans-serif">| </font><a href="http://www.kitware.com/company/team/chaudhary.html" target="_blank">http://www.kitware.com/company/team/chaudhary.html</a></i></div></div> </font></span></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="trebuchet ms, sans-serif"><i>| Aashish Chaudhary <br>| Technical Leader         <br>| Kitware Inc.            <br></i></font><div><i><font face="trebuchet ms, sans-serif">| </font><a href="http://www.kitware.com/company/team/chaudhary.html" target="_blank">http://www.kitware.com/company/team/chaudhary.html</a></i></div></div>
</div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="trebuchet ms, sans-serif"><i>| Aashish Chaudhary <br>| Technical Leader         <br>| Kitware Inc.            <br></i></font><div><i><font face="trebuchet ms, sans-serif">| </font><a href="http://www.kitware.com/company/team/chaudhary.html" target="_blank">http://www.kitware.com/company/team/chaudhary.html</a></i></div></div>
</div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div></div></div><div><div class="h5"><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="trebuchet ms, sans-serif"><i>| Aashish Chaudhary <br>| Technical Leader         <br>| Kitware Inc.            <br></i></font><div><i><font face="trebuchet ms, sans-serif">| </font><a href="http://www.kitware.com/company/team/chaudhary.html" target="_blank">http://www.kitware.com/company/team/chaudhary.html</a></i></div></div>
</div></div></div></div>
</blockquote></div><br></div>