<div dir="ltr"><span style="font-size:12.8px">Abel,</span><br><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">You may want to look into using vtkGenericOpenGLRenderWindow. See the newly added QVTKOpenGLWidget [1] in VTK/master as an example. There's too we're letting QOpenGLWidget create the OpenGL context and VTK manage the rendering.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Utkarsh</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">[1] <a href="https://gitlab.kitware.com/vtk/vtk/blob/master/GUISupport/Qt/QVTKOpenGLWidget.cxx">https://gitlab.kitware.com/vtk/vtk/blob/master/GUISupport/Qt/QVTKOpenGLWidget.cxx</a></span></div><div><span style="font-size:12.8px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 10, 2017 at 5:29 PM, huabel <span dir="ltr"><<a href="mailto:hu.ds.abel@icloud.com" target="_blank">hu.ds.abel@icloud.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi, <div>I am try to use GLFW as window manager, get this result:</div></div><br><div style="word-wrap:break-word"><div></div><div><br></div><div><br></div><div><span style="font-size:14px"><font color="#ff2600">It create two independent window, how can I let the vtk renderwindow show in glfw window?</font></span></div><div><br>The code demo1.cpp:<br><br>#include "vtkConeSource.h"<br>#include "vtkPolyDataMapper.h"<br>#include "vtkRenderWindow.h"<br>#include "vtkRenderWindowInteractor.h"<br>#include "vtkCamera.h"<br>#include "vtkActor.h"<br>#include "vtkRenderer.h"<br>#include "vtkCommand.h"<br>#include "vtkBoxWidget.h"<br>#include "vtkTransform.h"<br>#include "<wbr>vtkInteractorStyleTrackballCam<wbr>era.h"<br>#include <GLFW/glfw3.h><br><br>#define SCREEN_WIDTH 800<br>#define SCREEN_HEIGHT 600<br><br>class vtkMyCallback : public vtkCommand<br>{<br>public:<br>static vtkMyCallback *New()<br>  { return new vtkMyCallback; }<br>void Execute(vtkObject *caller, unsigned long, void*) VTK_OVERRIDE<br>{<br>    vtkTransform *t = vtkTransform::New();<br>    vtkBoxWidget *widget = reinterpret_cast<vtkBoxWidget*<wbr>>(caller);<br>    widget->GetTransform(t);<br>    widget->GetProp3D()-><wbr>SetUserTransform(t);<br>    t->Delete();<br>}<br>};<br><br>static void error_cb(int error, const char* description) {<br>fprintf(stderr, "Error: %s\n", description);<br>}<br><br>void drawScene(void) {<br>glClear(GL_COLOR_BUFFER_BIT);<br>vtkConeSource *cone = vtkConeSource::New();<br>cone->SetHeight( 3.0 );<br>cone->SetRadius( 1.0 );<br>cone->SetResolution( 10 );<br><br>vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();<br>coneMapper-><wbr>SetInputConnection( cone->GetOutputPort() );<br><br>vtkActor *coneActor = vtkActor::New();<br>coneActor->SetMapper( coneMapper );<br><br>vtkRenderer *ren1= vtkRenderer::New();<br>ren1->AddActor( coneActor );<br>ren1->SetBackground( 0.1, 0.2, 0.4 );<br><br>vtkRenderWindow *renWin = vtkRenderWindow::New();<br>renWin->AddRenderer( ren1 );<br>renWin->SetSize( 300, 300 );<br><br>vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::<wbr>New();<br>iren->SetRenderWindow(renWin);<br><br>vtkInteractorStyleTrackballCam<wbr>era *style = vtkInteractorStyleTrackballCam<wbr>era::New();<br>iren->SetInteractorStyle(<wbr>style);<br><br>vtkBoxWidget *boxWidget = vtkBoxWidget::New();<br>boxWidget->SetInteractor(iren)<wbr>;<br>boxWidget->SetPlaceFactor(1.<wbr>25);<br><br>boxWidget->SetProp3D(<wbr>coneActor);<br>boxWidget->PlaceWidget();<br>vtkMyCallback *callback = vtkMyCallback::New();<br>boxWidget->AddObserver(<wbr>vtkCommand::InteractionEvent, callback);<br><br>boxWidget->On();<br><br>iren->Initialize();<br>iren->Start();<br><br>cone->Delete();<br>coneMapper->Delete();<br>coneActor->Delete();<br>callback->Delete();<br>boxWidget->Delete();<br>ren1->Delete();<br>renWin->Delete();<br>iren->Delete();<br>style->Delete();<br>}<br><br>void setup(void) {<br>glClearColor(0.2, 0.2, 0.2, 0.0);<br><br>glShadeModel(GL_FLAT);<br>}<br><br>void reshape(GLFWwindow* window) {<br>glViewport(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT);<br>glMatrixMode(GL_PROJECTION);<br>glLoadIdentity();<br>glOrtho(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, 0, 1);<br>glMatrixMode(GL_MODELVIEW);<br>glLoadIdentity();<br>}<br><br>static void key_cb(GLFWwindow* window, int key, int s, int action, int mods) {<br>if (action != GLFW_PRESS) return;<br><br>switch (key) {<br>  case GLFW_KEY_ESCAPE:<br>    glfwSetWindowShouldClose(<wbr>window, 1);<br>    break;<br>}<br>}<br>int main()<br>{<br>GLFWwindow* window;<br><br>glfwSetErrorCallback(error_cb)<wbr>;<br><br>if (!glfwInit()) exit(EXIT_FAILURE);<br><br>window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "demo1", NULL, NULL);<br>if (!window) {<br>  glfwTerminate();<br>  exit(EXIT_FAILURE);<br>}<br><br>glfwMakeContextCurrent(window)<wbr>;<br>glfwSwapInterval(1);<br><br>glfwSetKeyCallback(window, key_cb);<br><br>setup();<br><br>while (!glfwWindowShouldClose(<wbr>window)) {<br>  reshape(window);<br>  drawScene();<br>  glfwSwapBuffers(window);<br>  glfwWaitEvents();<br>}<br><br>glfwTerminate();<br>exit(EXIT_SUCCESS);<br>return 0;<br>}<br><br>The CMakeLists.txt<br><br>cmake_minimum_required(VERSION 3.4)<br><br>project(examples)<br><br>include_directories(${CMAKE_<wbr>CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})<br><br>find_package(VTK REQUIRED)<br>include(${VTK_USE_FILE})<br><br>#set(glfw3_DIR "/opt/glfw/lib/cmake/glfw3")<br>find_package(glfw3 REQUIRED)<br>find_package(OpenGL REQUIRED)<br>find_package(GLEW REQUIRED)<br><br>include_directories(${OPENGL_<wbr>INCLUDE_DIR})<br>include_directories(${GLEW_<wbr>INCLUDE_DIR})<br>include_directories(${GLFW_<wbr>INCLUDE_DIR})<br><br>if(CMAKE_HOST_SYSTEM MATCHES Linux)<br>message("---> ${CMAKE_HOST_SYSTEM}")<br>set(libs ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} glfw m)<br>endif()<br><br>if(CMAKE_HOST_SYSTEM MATCHES Darwin)<br>message("---> ${CMAKE_HOST_SYSTEM}")<br>set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework OpenGL")<br>set(libs ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} glfw m)<br>endif()<br><br>set(lib ${VTK_LIBRARIES} ${ITK_LIBRARIES})<br><br>set(EXAMPLES_SRCS<br>demo1<br>)<br><br>foreach(name ${EXAMPLES_SRCS})<br>add_executable(${name} ${name}.cpp)<br>target_link_libraries(${name} ${VTK_LIBRARIES} ${libs})<br>#target_link_libraries(${name} ${VTK_LIBRARIES})<br>endforeach()<br><br><br><br>Thanks!<br>Abel<br></div><div><br></div><div></div></div><br><div style="word-wrap:break-word"><div></div></div><br><div style="word-wrap:break-word"><div></div><div><br></div><div><br></div><div><br></div><div><br></div></div><br>______________________________<wbr>_________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtk-developers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=<wbr>vtk-developers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtk-developers" rel="noreferrer" target="_blank">http://public.kitware.com/<wbr>mailman/listinfo/vtk-<wbr>developers</a><br>
<br>
<br></blockquote></div><br></div>