<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Type"
 content="text/html;charset=ISO-2022-JP">
  <title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
<small><font face="Courier New, Courier, monospace">Hi,<br>
<br>
I need to do some OpenGL immediate mode rendering into a VTK scene. In
this example, I draw a cone using VTK, and when I get an EndEvent from
the vtkRenderer (which occurs at the end of the render), I draw a
little rectangle using pure OpenGL.<br>
<br>
Here's the problem: The drawn rectangle is always the same color as the
cone, regardless of what I set it to with glColor3f. If I change the
cone to red, the rectangle will be red, etc. The rect is renderer in
the correct location, but with the wrong color.<br>
<br>
The code is below. I sure could use some help on this one.<br>
<br>
Thanks,<br>
<br>
- David Edwards<br>
<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
// Draw vtk cone and pure OpenGL rectangle.<br>
//<br>
<br>
#include "stdafx.h"<br>
#include "vtkRenderer.h"<br>
#include "vtkRenderWindow.h"<br>
#include "vtkConeSource.h"<br>
#include "vtkPolyDataMapper.h"<br>
#include "vtkActor.h"<br>
#include "vtkRenderWindowInteractor.h"<br>
#include "vtkCommand.h"<br>
#include "vtkProperty.h"<br>
#include &lt;gl/gl.h&gt;<br>
#include &lt;gl/glu.h&gt;<br>
<br>
class CRenderCommand : public vtkCommand<br>
{<br>
public:<br>
&nbsp; static CRenderCommand *New() <br>
&nbsp;&nbsp;&nbsp; { return new CRenderCommand; }<br>
&nbsp; //<br>
&nbsp; // This gets executed when the Renderer completes the rendering <br>
&nbsp; // (but before exiting UpdateGeometry()<br>
&nbsp; virtual void Execute(vtkObject *caller, unsigned long, void*) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkRenderer *renderer =
reinterpret_cast&lt;vtkRenderer*&gt;(caller);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkRenderWindow* rw = renderer-&gt;GetRenderWindow();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; rw-&gt;MakeCurrent();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; glColor3f(0,1,0);&nbsp; // This line has no effect<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; glRectf(.3,-.3,.4,-.4); // Draw the rectangle<br>
&nbsp;&nbsp;&nbsp; }<br>
};<br>
<br>
void main( int argc, char *argv[] )<br>
{<br>
<br>
&nbsp; //&nbsp; <br>
&nbsp; // create a rendering window and renderer<br>
&nbsp; vtkRenderer *ren = vtkRenderer::New();<br>
&nbsp; //<br>
&nbsp; // Add the callback for the render method<br>
</font></small><small><font face="Courier New, Courier, monospace">&nbsp;
CRenderCommand* pCallback = CRenderCommand::New();</font></small><small><font
 face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp; ren-&gt;AddObserver(vtkCommand::EndEvent,pCallback);<br>
<br>
&nbsp; vtkRenderWindow *renWindow = vtkRenderWindow::New();<br>
&nbsp;&nbsp;&nbsp; renWindow-&gt;AddRenderer(ren);<br>
&nbsp; //<br>
&nbsp; // create an actor and give it cone geometry<br>
&nbsp; vtkConeSource *cone = vtkConeSource::New();<br>
&nbsp;&nbsp;&nbsp; cone-&gt;SetResolution(8);<br>
&nbsp; vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();<br>
&nbsp;&nbsp;&nbsp; coneMapper-&gt;SetInput(cone-&gt;GetOutput());<br>
&nbsp; vtkActor *coneActor = vtkActor::New();<br>
&nbsp;&nbsp;&nbsp; coneActor-&gt;SetMapper(coneMapper);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; coneActor-&gt;GetProperty()-&gt;SetColor(0,0,1);<br>
&nbsp;&nbsp;&nbsp; //<br>
&nbsp; // assign our actor to the renderer<br>
&nbsp; ren-&gt;AddActor(coneActor);<br>
&nbsp;&nbsp;&nbsp; //<br>
&nbsp;&nbsp;&nbsp; // draw the resulting scene<br>
&nbsp;&nbsp;&nbsp; vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();<br>
&nbsp;&nbsp;&nbsp; iren-&gt;SetRenderWindow(renWindow);<br>
<br>
&nbsp; renWindow-&gt;Render();<br>
&nbsp;&nbsp;&nbsp; iren-&gt;Start();<br>
&nbsp;&nbsp;&nbsp; //<br>
&nbsp; // Clean up<br>
&nbsp; ren-&gt;Delete();<br>
&nbsp; renWindow-&gt;Delete();<br>
&nbsp; cone-&gt;Delete();<br>
&nbsp; coneMapper-&gt;Delete();<br>
&nbsp; coneActor-&gt;Delete();<br>
}<br>
<br>
</font></small><br>
</body>
</html>