<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>Hi,</div><div> I did a little bit more digging around the sources and found the following pieces of information.</div><div><br></div><div><a href="http://doc.trolltech.com/4.4/qglwidget.html">Qt 4.4.3: QGLWidget Class Reference</a></div><div><br></div><div>QGLWidget provides functionality for displaying OpenGL graphics integrated into a Qt application. It is very simple to use. You inherit from it and use the subclass like any other <a href="http://doc.trolltech.com/4.4/qwidget.html" style="color: rgb(0, 79, 175); text-decoration: none; ">QWidget</a>, except that you have the choice between using <a href="http://doc.trolltech.com/4.4/qpainter.html" style="color: rgb(0, 79, 175); text-decoration: none; ">QPainter</a> and standard OpenGL rendering commands.</div><div><br></div><div>If you look at the QVTKWidget class, it inherits from QWidget and uses the QPainter class to render images onto the window. Correct me if I'm wrong, but if we replace this with standard OpenGL rendering commands, we should be able to get a performance increase in rendering VTK when using it with Qt. </div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(92, 38, 153); "><span style="color: rgb(170, 13, 145); ">void</span><span style="color: rgb(0, 0, 0); "> </span>QVTKWidget<span style="color: rgb(0, 0, 0); ">::paintEvent(</span>QPaintEvent<span style="color: rgb(0, 0, 0); ">* )</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">..</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: rgb(0, 0, 0); "> </span>// In Qt 4.1+ let's support redirected painting</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#if QT_VERSION >= <span style="color: rgb(28, 0, 207); ">0x040100</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(0, 116, 0); "><span style="color: rgb(0, 0, 0); "> </span>// if redirected, let's grab the image from VTK, and paint it to the device</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(92, 38, 153); "><span style="color: rgb(0, 0, 0); "> </span>QPaintDevice<span style="color: rgb(0, 0, 0); ">* device = </span>QPainter<span style="color: rgb(0, 0, 0); ">::</span><span style="color: rgb(46, 13, 110); ">redirected</span><span style="color: rgb(0, 0, 0); ">(</span><span style="color: rgb(170, 13, 145); ">this</span><span style="color: rgb(0, 0, 0); ">);</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> <span style="color: rgb(170, 13, 145); ">if</span>(device != <span style="color: rgb(170, 13, 145); ">NULL</span> && device != <span style="color: rgb(170, 13, 145); ">this</span>)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> <span style="color: rgb(170, 13, 145); ">int</span> w = <span style="color: rgb(170, 13, 145); ">this</span>-><span style="color: rgb(46, 13, 110); ">width</span>();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> <span style="color: rgb(170, 13, 145); ">int</span> h = <span style="color: rgb(170, 13, 145); ">this</span>-><span style="color: rgb(46, 13, 110); ">height</span>();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(46, 13, 110); "><span style="color: rgb(0, 0, 0); "> </span>QImage<span style="color: rgb(0, 0, 0); "> img(w, h, </span>QImage<span style="color: rgb(0, 0, 0); ">::</span>Format_RGB32<span style="color: rgb(0, 0, 0); ">);</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(92, 38, 153); "><span style="color: rgb(0, 0, 0); "> </span>vtkUnsignedCharArray<span style="color: rgb(0, 0, 0); ">* pixels = </span>vtkUnsignedCharArray<span style="color: rgb(0, 0, 0); ">::</span><span style="color: rgb(46, 13, 110); ">New</span><span style="color: rgb(0, 0, 0); ">();</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> pixels-><span style="color: rgb(46, 13, 110); ">SetArray</span>(img.<span style="color: rgb(46, 13, 110); ">bits</span>(), w*h*<span style="color: rgb(28, 0, 207); ">4</span>, <span style="color: rgb(28, 0, 207); ">1</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> <span style="color: rgb(170, 13, 145); ">this</span>-><span style="color: rgb(92, 38, 153); ">mRenWin</span>-><span style="color: rgb(46, 13, 110); ">GetRGBACharPixelData</span>(<span style="color: rgb(28, 0, 207); ">0</span>, <span style="color: rgb(28, 0, 207); ">0</span>, w-<span style="color: rgb(28, 0, 207); ">1</span>, h-<span style="color: rgb(28, 0, 207); ">1</span>, <span style="color: rgb(28, 0, 207); ">1</span>, pixels);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> pixels-><span style="color: rgb(46, 13, 110); ">Delete</span>();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> img = img.<span style="color: rgb(46, 13, 110); ">rgbSwapped</span>();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> img = img.<span style="color: rgb(46, 13, 110); ">mirrored</span>();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "> <br class="webkit-block-placeholder"></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> <span style="color: rgb(92, 38, 153); ">QPainter</span> <span style="color: rgb(46, 13, 110); ">painter</span>(<span style="color: rgb(170, 13, 145); ">this</span>);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> painter.<span style="color: rgb(46, 13, 110); ">drawImage</span>(<span style="color: rgb(92, 38, 153); ">QPointF</span>(<span style="color: rgb(28, 0, 207); ">0.0</span>,<span style="color: rgb(28, 0, 207); ">0.0</span>), img);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(170, 13, 145); "><span style="color: rgb(0, 0, 0); "> </span>return<span style="color: rgb(0, 0, 0); ">;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "> }</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; color: rgb(100, 56, 32); ">#endif</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div><br></div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">..</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" face="Helvetica" size="3">Best regards,</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" face="Helvetica" size="3"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" face="Helvetica" size="3">Elvis Dowson</font></div></div></div><div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; "></span></div></div></div></blockquote></div><br></body></html>