2015-12-18 54 views
-1

我正在使用QT和OpenGL的组合创建一个程序。我尝试初始化OpenGL部分时收到警告:GLUT警告:glutInit被第二次调用。我只在我的程序中调用过一次。该程序适用于基于Linux的机器,但不适用于Mac。GLUT警告:glutInit被第二次调用

凡的OpenGL最初从drawOpTableFunction叫:

n = ui->opTableSize->currentText().toInt(); 
basePatternCode = ui->basePatternChoose->currentText().toStdString().c_str()[0]; 

ui->modAddWidget->close(); 

ModNAdd modA(n); 
modA.fillTable(); 
tiles = new Tile*[n]; 
for(int i = 0; i < n; i ++) 
    tiles[i] = new Tile(m_color, basePatternCode); 
drawOpTableFunction(modA.getTable(), tiles, n); 

凡drawOpTableFunction带领你:

void drawOpTableFunction(int **ta, Tile **ti, int en) 
{ 
    table1 = ta; 
    tiles1 = ti; 
    n1 = en; 
    HEIGHT = ((n1*50)); 
    WIDTH = ((n1*50)); 

    init_gl_window(); 
} 

init_gl_window():

void init_gl_window() 
{ 
    char *argv[] = {programName}; 
    int argc = sizeof(argv)/sizeof(argv[0]); 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); 
    glutInitWindowSize(WIDTH,HEIGHT); 
    glutInitWindowPosition(100,100); 
    glutCreateWindow(programName); 
    init(); 

    glutDisplayFunc(drawWindow); 
    glutReshapeFunc(reshape); 
    glutMainLoop(); 
} 

正如你所看到的,glutInit()只被调用一次。

+0

您是否多次调用'init_gl_window'?在其上放置打印语句或断点。 –

+0

它是probalby,因为Qt在内部调用函数 - 只是把它放在外面,它应该工作 – Felix

回答

0

如果你使用Qt,你为什么要拉GLUT? GLUT只是一些第三方框架。 GLUT和Qt正在填补同一个位置。如果你使用Qt,不要使用GLUT。那很简单。

相关问题