<div dir="ltr">Hi Brad,<div><br></div><div>Overriding a virtual C++ method in Python only works if the method is called from Python.  In this case, the Render method is being called from C++.</div><div><br></div><div> - David<br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 16, 2016 at 5:15 PM, Brad Hollister <span dir="ltr"><<a href="mailto:behollis@sci.utah.edu" target="_blank">behollis@sci.utah.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">How would it be possible to call directly to OpenGL with a derived mapper object (simple example below) and draw into the VTK window using Python? I've tried a similar bit of code, but the overriden Render() is never called. A few old forum emails state that it is possible to override the Render function (or maybe Draw() with 7.0) and issue calls directly to OpenGL for the current VTK render window.<br>
<br>
class vtkOpenGLPolyDataMapperCustom(vtkOpenGLPolyDataMapper):<br>
    def __init__(self):<br>
        print "calling init in derived class"<br>
        vtkOpenGLPolyDataMapper.__init__(self)<br>
<br>
    def Render( self, ren, act ):<br>
        print 'Render overriden function is being called...'<br>
        ren.GetRenderWindow().MakeCurrent()<br>
        self.drawUsingOpenGL()<br>
<br>
    def drawUsingOpenGL(self):<br>
        glLoadIdentity()<br>
        glBegin(GL_QUADS)<br>
        glVertex3f(-1.0, 1.0, 0.0)<br>
        glVertex3f(-1.1, 1.0, 0.0)<br>
        glVertex3f(-1.1, 0.5, 0.0)<br>
        glVertex3f(-1.0, 0.5, 0.0)<br>
        glEnd()<br>
</blockquote></div><br></div></div></div>