2016-07-29 164 views
-2

這在Linux中運行良好,但在Windows上窗口停止響應,鼠標進入等待光標。我錯過了什麼?窗口正在凍結

// initialization 
glutInit(&argc, argv); 
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); 
glutInitWindowSize(1024, 768); 
glutCreateWindow("GL Window"); 
glutTimerFunc(2, update, 0); 
glutDisplayFunc(display); 
glutMainLoop(); 
// ... 
fflush(stdout); 

// update rate 
void update(int value) 
{ 
    glutPostRedisplay(); 
    glutTimerFunc(250, update, 0); 
} 

// loop 
while(true) 
{ 
    display() 
    { 
     drawing(5); 
     glutSwapBuffers(); 
    } 
} 

// drawing 
void drawing(unsigned int sides) 
{ 
    if (sides < 3) return; 
    const float step = (2 * PI)/static_cast<float>(sides); 
    glBegin(GL_LINE_LOOP); 
    for (unsigned int i = 0; i < sides; ++i) 
    { 
     glVertex2f(cos(i * step), sin(i * step)); 
    } 
    glEnd(); 
} 
+0

當你在'drawing()'函數結束時'glFlush()'會發生什麼?你是否闖入調試器來測試它,看看它是否掛在_your_代碼的某個地方? – Qix

+0

沒有區別。它不會掛在某個地方。正如我所說的,它在linux中運行良好。 – telcom

+0

我認爲Qix意味着嘗試在Windows中逐步查看它掛起/凍結的位置 – Alex

回答

0

感謝Alex和Qix的評論。 我發現我在循環中運行opengl繪圖函數。刪除循環解決了這個問題。 仍然想知道爲什麼在Linux上它工作雖然?