【发布时间】:2013-01-02 20:11:08
【问题描述】:
我是 openGL 的初学者。在所有简单的示例中,主函数都有参数,而 glutinit func 使用这些参数。但我不明白为什么它们是必要的。我在命令参数中什么也没写,程序仍然有效。它们是用来做什么的?可以举个例子吗?
glutInit(&argc, argv)
【问题讨论】:
标签: opengl
我是 openGL 的初学者。在所有简单的示例中,主函数都有参数,而 glutinit func 使用这些参数。但我不明白为什么它们是必要的。我在命令参数中什么也没写,程序仍然有效。它们是用来做什么的?可以举个例子吗?
glutInit(&argc, argv)
【问题讨论】:
标签: opengl
另一种情况是当 unix main() 接受命令行参数时,我们都不希望通过 GLUT 获得“管道”。
在这种情况下,我们应该在main() 中的某处声明并初始化“自定义”GLUT 初始化变量:
int foo = 1;
char * bar[1] = {" "};
glutInit(&foo, bar);
【讨论】:
glutInit 用于初始化 GLUT 库。 在 C 中,可以接受命令行参数。命令行参数在 DOS 或 Linux 等命令行操作系统中的程序名称之后给出,并从操作系统传递给程序。要在程序中使用命令行参数,您必须首先了解 main 函数的完整声明,该函数以前不接受任何参数。事实上, main 实际上可以接受两个参数:一个参数是命令行参数的数量,另一个参数是所有命令行参数的完整列表。
argcp:指向程序未修改的 argc 变量的指针。返回时, argcp 指向的值将被更新,因为 glutInit 提取任何用于 GLUT 库的命令行选项。 argv:程序未修改的来自 main 的 argv 变量。与 argcp 一样,argv 的数据将被更新,因为 glutInit 提取 GLUT 库可以理解的任何命令行选项。
glutInit 也处理命令行选项,但具体的选项解析取决于窗口系统。
【讨论】:
使用它们是为了让 GLUT 可以处理命令行参数。它有许多始终使用的参数。如果您不希望 GLUT 处理参数,只需传递如下内容:
{
int argc = 1;
char *argv[1] = {(char*)"Something"};
glutInit(&argc, argv);
}
【讨论】:
-display)选项。它还可以支持-geometry 选项来定义初始位置和窗口大小。