我正在使用QT和OpenGL的组合创建一个程序。当我尝试初始化OpenGL部分时,我收到警告:GLUT警告:第二次调用glutInit。我只在程序中调用一次。该程序适用于基于Linux的计算机,但不适用于Mac。
最初在drawOpTableFunction中调用OpenGL的地方:
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 :(得分:0)
如果您正在使用Qt,为什么要拉入GLUT? GLUT只是一些第三方框架。 GLUT和Qt正在填补相同的位置。如果您使用的是Qt,请不要使用GLUT。那很简单。