2012-05-05 15 views
0

複数のOpenGL/Glutウィンドウを開く方法を知りたいと思います。 と私が同時に ないサブウィンドウと は、同じウィンドウを更新しない複数のWindows OpenGL/Glut

+1

[これはどうでしょう?](https://docs.google.com/viewer?a=v&q=cache:o0oeSgPKnqIJ:www.cs.uml.edu/~hmasterm/Charts/Managing_Multiple_Windows.ppt+&hl=ja&gl = UK&PID = BL&SRCID = ADGEESihxzk1y3TDCXn6d5irTvT0eoQWFZmh6L-rLJo0UKQNO5WLd7tjoe8DxW6_wOzOu1F6U7VqTnFtTkhbGkd-gyJn6TpPkbNUcjAtHqDgSsGSZ-keOGkPA16TRsnBflwj8NMrIshN&SIG = AHIEtbQLFUU-hI_fKaVvqR_JP1aXw_14dg) – Thomas

答えて

1

複数のウィンドウを意味し、あなたがそれを複数回行う必要があり除きあなたは、一つのウィンドウを作成するのと同じ方法:

#include <cstdlib> 
#include <GL/glut.h> 

// Display callback ------------------------------------------------------------ 

float clr = 0.2; 

void display() 
{ 
    // clear the draw buffer . 
    glClear(GL_COLOR_BUFFER_BIT); // Erase everything 

    // set the color to use in draw 
    clr += 0.1; 
    if (clr>1.0) 
    { 
     clr=0; 
    } 
    // create a polygon (define the vertexs) 
    glBegin(GL_POLYGON); { 
     glColor3f(clr, clr, clr); 
     glVertex2f(-0.5, -0.5); 
     glVertex2f(-0.5, 0.5); 
     glVertex2f(0.5, 0.5); 
     glVertex2f(0.5, -0.5); 
    } glEnd(); 

    glFlush(); 
} 

// Main execution function 
int main(int argc, char *argv[]) 
{ 
    glutInit(&argc, argv);  // Initialize GLUT 
    glutCreateWindow("win1"); // Create a window 1 
    glutDisplayFunc(display); // Register display callback 
    glutCreateWindow("win2"); // Create a window 2 
    glutDisplayFunc(display); // Register display callback 

    glutMainLoop();    // Enter main event loop 
} 

この例は、両方のウィンドウで同じコールバックをレンダリングするように設定する方法を示しています。しかし、あなたは窓のために異なった機能を使うことができます。

3

私は上記の答えは正確だと思っていますが、少し複雑になり、後でウィンドウ間を移動する(例えば、描画するなど)ときに難しいかもしれません。これは、私たちがちょうどクラスで何をやったかである:

GLint WindowID1, WindowID2;     // window ID numbers 

glutInitWindowSize(250.0, 250.0);   // set a window size 
glutInitWindowPosition(50,50);    // set a window position 
WindowID1 = glutCreateWindow("Window One"); // Create window 1 

glutInitWindowSize(500.0, 250.0);   // set a window size 
glutInitWindowPosition(500,50);    // set a window position 
WindowID2 = glutCreateWindow("Window Two"); // Create window 2 

あなたは、私が同じ作成ウィンドウ関数を使用しますが輝きにロードしてい気づくでしょう。これは、このようにしてウィンドウを作成すると、glutがウィンドウを識別するために使用する一意のGLintを実際に返します。

ウィンドウ間を移動して適切な描画機能を実行するためには、ウィンドウを取得して設定する必要があります。 You can find the calls here

関連する問題