2013-09-25 17 views
1

我正在使用Sumanta Guha的代碼示例,並試圖創建兩個窗口。使用以下代碼:OpenGL與GLUT_DOUBLE和兩個窗口的問題

int main(int argc, char **argv) 
{ 
glutInit(&argc, argv); 
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); 

// First top-level window definition. 
glutInitWindowSize(250, 500); 
glutInitWindowPosition(100, 100); 

// Create the first window and return id. 
id1 = glutCreateWindow("windows.cpp - window 1"); 

// Initialization, display, and other routines of the first window. 
setup1(); 
glutDisplayFunc(drawScene1); 
glutReshapeFunc(resize1); 
glutKeyboardFunc(keyInput); // Routine is shared by both windows. 

// Second top-level window definition. 
glutInitWindowSize(250, 500); 
glutInitWindowPosition(400, 100); 

// Create the second window and return id. 
id2 = glutCreateWindow("windows.cpp - window 2"); 

// Initialization, display, and other routines of the second window. 
setup2(); 
glutDisplayFunc(drawScene2); 
glutReshapeFunc(resize2); 
glutKeyboardFunc(keyInput); // Routine is shared by both windows. 

glutMainLoop(); 

return 0; 
} 

我使用Windows 7,通常它應該顯示兩個窗口。但是,正如你所看到的,只有一個窗口正確顯示,而另一個窗口看起來並沒有那麼好。除了GLUT_DOUBLE和緩衝區交換,我還需要採取其他步驟嗎?

enter image description here

回答

1

是我必須採取其他比GLUT_DOUBLE和緩衝交換有額外的步驟?

由於您正在創建多個窗口,因此您必須在回調中調用glutSetWindow()

freeglut有一個擴展(它不起作用)來創建一個共享的opengl上下文,但原來的glut不支持它。