如何在没有主线参数的情况下初始化过剩?

时间:2014-01-26 16:03:03

标签: c++ opengl visual-c++-2010

在c ++中,我们习惯于看到opengl安装在main函数中。例如 -

int main(int argv,char **argc){
         glutInit(&argv,argc);
         glutInitDisplayMode(GLUT_DOUBLE| GLUT_RGB|GLUT_DEPTH);

..............................
}

但是如果没有这个主函数,我们如何在其他子函数中声明opengl? 如 -

int main(){
...........}

int installopengl(int argv,char **argc){
glutInit(&argv,argc);


glutInitDisplayMode(GLUT_DOUBLE| GLUT_RGB|GLUT_DEPTH);

..............................
}

3 个答案:

答案 0 :(得分:3)

也许我误解了 - 为什么你不能直接调用下面这个函数?

int main(int argv,char **argc) {
    installopengl(argv, argc);

    ...........
}

int installopengl(int argv,char **argc) {
    glutInit(&argv,argc);
    glutInitDisplayMode(GLUT_DOUBLE| GLUT_RGB|GLUT_DEPTH);

    ..............................
}

答案 1 :(得分:2)

请正确使用您的术语。 OpenGL未在程序中安装。它被初始化

您引用的模式也是GLUT初始化。 GLUT不是OpenGL,而是一个简单的窗口框架,它创建一个OpenGL上下文供您用于绘制到窗口。但是还有其他一些框架。

然后你似乎完全误解了主要功能的作用。 main是程序入口点,是在运行时环境设置之后在进程中调用的第一个函数。 main可以调用任何函数,你只需在那里调用一个专用的框架初始化。如果它需要来自main的参数,你只需传递它们。

答案 2 :(得分:1)

虽然不建议使用,但您始终可以这样做:

int i = 0;
glutInit(&i, NULL);

这样做的问题是你将无法从命令行向glut库传递任何信息。