C++ GLUT警告:第二次调用glutInit
我正在使用QT和OpenGL的组合创建一个程序。当我尝试初始化OpenGL部分时,我得到一个警告:GLUT warning:glutInit被第二次调用。在我的程序中,我只调用它一次。该程序可以在基于Linux的机器上运行,但不能在Mac上运行 OpenGL最初是从DrawOpTable函数中调用的:C++ GLUT警告:第二次调用glutInit,c++,qt,opengl,C++,Qt,Opengl,我正在使用QT和OpenGL的组合创建一个程序。当我尝试初始化OpenGL部分时,我得到一个警告:GLUT warning:glutInit被第二次调用。在我的程序中,我只调用它一次。该程序可以在基于Linux的机器上运行,但不能在Mac上运行 OpenGL最初是从DrawOpTable函数中调用的: n = ui->opTableSize->currentText().toInt(); basePatternCode = ui->basePatternChoose->c
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);
初始化gl\u窗口():
如您所见,glutInit()只被调用一次。如果您使用的是Qt,为什么要引入GLUT?GLUT只是一些第三方框架。GLUT和Qt正在填充同一个点。如果您使用的是Qt,请不要使用GLUT。很简单。您是否多次调用
init\u gl\u window
?在它上面放一个print语句或断点。这可能是因为Qt在内部某个地方调用了这个函数——只需将它去掉,它就会工作
void drawOpTableFunction(int **ta, Tile **ti, int en)
{
table1 = ta;
tiles1 = ti;
n1 = en;
HEIGHT = ((n1*50));
WIDTH = ((n1*50));
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();
}