<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><div class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><span style="font-size: 14px;" class=""><font color="#ff2600" class="">It create two independent window, how can I let the vtk renderwindow show in glfw window?</font></span></div><div class=""><br class="">The code demo1.cpp:<br class=""><br class="">#include "vtkConeSource.h"<br class="">#include "vtkPolyDataMapper.h"<br class="">#include "vtkRenderWindow.h"<br class="">#include "vtkRenderWindowInteractor.h"<br class="">#include "vtkCamera.h"<br class="">#include "vtkActor.h"<br class="">#include "vtkRenderer.h"<br class="">#include "vtkCommand.h"<br class="">#include "vtkBoxWidget.h"<br class="">#include "vtkTransform.h"<br class="">#include "vtkInteractorStyleTrackballCamera.h"<br class="">#include <GLFW/glfw3.h><br class=""><br class="">#define SCREEN_WIDTH 800<br class="">#define SCREEN_HEIGHT 600<br class=""><br class="">class vtkMyCallback : public vtkCommand<br class="">{<br class="">public:<br class="">static vtkMyCallback *New()<br class="">  { return new vtkMyCallback; }<br class="">void Execute(vtkObject *caller, unsigned long, void*) VTK_OVERRIDE<br class="">{<br class="">    vtkTransform *t = vtkTransform::New();<br class="">    vtkBoxWidget *widget = reinterpret_cast<vtkBoxWidget*>(caller);<br class="">    widget->GetTransform(t);<br class="">    widget->GetProp3D()->SetUserTransform(t);<br class="">    t->Delete();<br class="">}<br class="">};<br class=""><br class="">static void error_cb(int error, const char* description) {<br class="">fprintf(stderr, "Error: %s\n", description);<br class="">}<br class=""><br class="">void drawScene(void) {<br class="">glClear(GL_COLOR_BUFFER_BIT);<br class="">vtkConeSource *cone = vtkConeSource::New();<br class="">cone->SetHeight( 3.0 );<br class="">cone->SetRadius( 1.0 );<br class="">cone->SetResolution( 10 );<br class=""><br class="">vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();<br class="">coneMapper->SetInputConnection( cone->GetOutputPort() );<br class=""><br class="">vtkActor *coneActor = vtkActor::New();<br class="">coneActor->SetMapper( coneMapper );<br class=""><br class="">vtkRenderer *ren1= vtkRenderer::New();<br class="">ren1->AddActor( coneActor );<br class="">ren1->SetBackground( 0.1, 0.2, 0.4 );<br class=""><br class="">vtkRenderWindow *renWin = vtkRenderWindow::New();<br class="">renWin->AddRenderer( ren1 );<br class="">renWin->SetSize( 300, 300 );<br class=""><br class="">vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();<br class="">iren->SetRenderWindow(renWin);<br class=""><br class="">vtkInteractorStyleTrackballCamera *style = vtkInteractorStyleTrackballCamera::New();<br class="">iren->SetInteractorStyle(style);<br class=""><br class="">vtkBoxWidget *boxWidget = vtkBoxWidget::New();<br class="">boxWidget->SetInteractor(iren);<br class="">boxWidget->SetPlaceFactor(1.25);<br class=""><br class="">boxWidget->SetProp3D(coneActor);<br class="">boxWidget->PlaceWidget();<br class="">vtkMyCallback *callback = vtkMyCallback::New();<br class="">boxWidget->AddObserver(vtkCommand::InteractionEvent, callback);<br class=""><br class="">boxWidget->On();<br class=""><br class="">iren->Initialize();<br class="">iren->Start();<br class=""><br class="">cone->Delete();<br class="">coneMapper->Delete();<br class="">coneActor->Delete();<br class="">callback->Delete();<br class="">boxWidget->Delete();<br class="">ren1->Delete();<br class="">renWin->Delete();<br class="">iren->Delete();<br class="">style->Delete();<br class="">}<br class=""><br class="">void setup(void) {<br class="">glClearColor(0.2, 0.2, 0.2, 0.0);<br class=""><br class="">glShadeModel(GL_FLAT);<br class="">}<br class=""><br class="">void reshape(GLFWwindow* window) {<br class="">glViewport(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT);<br class="">glMatrixMode(GL_PROJECTION);<br class="">glLoadIdentity();<br class="">glOrtho(0, SCREEN_WIDTH, 0, SCREEN_HEIGHT, 0, 1);<br class="">glMatrixMode(GL_MODELVIEW);<br class="">glLoadIdentity();<br class="">}<br class=""><br class="">static void key_cb(GLFWwindow* window, int key, int s, int action, int mods) {<br class="">if (action != GLFW_PRESS) return;<br class=""><br class="">switch (key) {<br class="">  case GLFW_KEY_ESCAPE:<br class="">    glfwSetWindowShouldClose(window, 1);<br class="">    break;<br class="">}<br class="">}<br class="">int main()<br class="">{<br class="">GLFWwindow* window;<br class=""><br class="">glfwSetErrorCallback(error_cb);<br class=""><br class="">if (!glfwInit()) exit(EXIT_FAILURE);<br class=""><br class="">window = glfwCreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "demo1", NULL, NULL);<br class="">if (!window) {<br class="">  glfwTerminate();<br class="">  exit(EXIT_FAILURE);<br class="">}<br class=""><br class="">glfwMakeContextCurrent(window);<br class="">glfwSwapInterval(1);<br class=""><br class="">glfwSetKeyCallback(window, key_cb);<br class=""><br class="">setup();<br class=""><br class="">while (!glfwWindowShouldClose(window)) {<br class="">  reshape(window);<br class="">  drawScene();<br class="">  glfwSwapBuffers(window);<br class="">  glfwWaitEvents();<br class="">}<br class=""><br class="">glfwTerminate();<br class="">exit(EXIT_SUCCESS);<br class="">return 0;<br class="">}<br class=""><br class="">The CMakeLists.txt<br class=""><br class="">cmake_minimum_required(VERSION 3.4)<br class=""><br class="">project(examples)<br class=""><br class="">include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})<br class=""><br class="">find_package(VTK REQUIRED)<br class="">include(${VTK_USE_FILE})<br class=""><br class="">#set(glfw3_DIR "/opt/glfw/lib/cmake/glfw3")<br class="">find_package(glfw3 REQUIRED)<br class="">find_package(OpenGL REQUIRED)<br class="">find_package(GLEW REQUIRED)<br class=""><br class="">include_directories(${OPENGL_INCLUDE_DIR})<br class="">include_directories(${GLEW_INCLUDE_DIR})<br class="">include_directories(${GLFW_INCLUDE_DIR})<br class=""><br class="">if(CMAKE_HOST_SYSTEM MATCHES Linux)<br class="">message("---> ${CMAKE_HOST_SYSTEM}")<br class="">set(libs ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} glfw m)<br class="">endif()<br class=""><br class="">if(CMAKE_HOST_SYSTEM MATCHES Darwin)<br class="">message("---> ${CMAKE_HOST_SYSTEM}")<br class="">set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework OpenGL")<br class="">set(libs ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES} glfw m)<br class="">endif()<br class=""><br class="">set(lib ${VTK_LIBRARIES} ${ITK_LIBRARIES})<br class=""><br class="">set(EXAMPLES_SRCS<br class="">demo1<br class="">)<br class=""><br class="">foreach(name ${EXAMPLES_SRCS})<br class="">add_executable(${name} ${name}.cpp)<br class="">target_link_libraries(${name} ${VTK_LIBRARIES} ${libs})<br class="">#target_link_libraries(${name} ${VTK_LIBRARIES})<br class="">endforeach()<br class=""><br class=""><br class=""><br class="">Thanks!<br class="">Abel<br class=""></div><div class=""><br class=""></div><div class=""></div></body></html>