Hi --

I'm using vtk in a program that has a gtk2 GUI.   To embed the vtk window in 
gtk, on Linux I can do this:
    vtkRenderWindow *render_win = vtkRenderWindow::New();
    GtkWidget *drawing_area = gtk_drawing_area_new();
    Display *disp = GDK_DISPLAY();
    render_win->SetDisplayId(disp);
followed eventually by 
     XID wid = GDK_WINDOW_XID(drawing_area->window);
     render_win->SetWindowId(wid);
after receiving the gtk "realize" signal on the drawing_area.

This seems to work, on Linux.   However when using the vtk from macports on 
macOS,  vtkRenderWindow::New creates a vtkCocoaRenderWindow, which doesn't 
implement SetDisplayId.  I rebuilt vtk with VTK_USE_X instead of VTK_USE_COCOA, 
but the version of OpenGL in /System/Library/Frameworks/OpenGL.framework 
doesn't seem to support X.  So I changed the OPENGL_* values in the vtk 
configuration to point to /opt/local/* and installed macports' mesa package.  
Now the program compiles and links, but when the window is created it warns
       VTK is designed to work with OpenGL version 3.2 but it appears it has 
been given a context that does not support 3.2. VTK will run in a compatibility 
mode designed to work with earlier versions of OpenGL but some features may not 
work.

Indeed, on the first attempt to draw in the window, I'm told
  ERROR: In 
/Users/langer/UTIL/VTK/VTK-7.1.1/Rendering/OpenGL2/vtkTextureObject.cxx, line 
440
  vtkTextureObject (0x7f9eafdb1690): failed at glGenTextures 1 OpenGL errors 
detected
    0 : (1280) Invalid enum

So,  what's the right way to link to a modern X11 version of OpenGL?  Mesa says 
it's version 17.1.6, which is recent (assuming that the macports and mesa 
version numbers agree).

Would it be easier if I stopped trying to use X11 on the Mac and switched to 
the Quartz variant of gtk2 and the Cocoa version of vtk?   Would upgrading to 
gtk3 help?  I'm really hoping not to have to do that right now.

Many thanks for any suggestions.

 -- Steve

Reply via email to