【问题标题】:glutinit argumentsglutinit 参数
【发布时间】:2013-01-02 20:11:08
【问题描述】:

我是 openGL 的初学者。在所有简单的示例中,主函数都有参数,而 glutinit func 使用这些参数。但我不明白为什么它们是必要的。我在命令参数中什么也没写,程序仍然有效。它们是用来做什么的?可以举个例子吗?

glutInit(&argc, argv)

【问题讨论】:

    标签: opengl


    【解决方案1】:

    另一种情况是当 unix main() 接受命令行参数时,我们都不希望通过 GLUT 获得“管道”。

    在这种情况下,我们应该在main() 中的某处声明并初始化“自定义”GLUT 初始化变量:

    int foo = 1;
    char * bar[1] = {" "};
    glutInit(&foo, bar);
    

    【讨论】:

      【解决方案2】:

      glutInit 用于初始化 GLUT 库。 在 C 中,可以接受命令行参数。命令行参数在 DOS 或 Linux 等命令行操作系统中的程序名称之后给出,并从操作系统传递给程序。要在程序中使用命令行参数,您必须首先了解 main 函数的完整声明,该函数以前不接受任何参数。事实上, main 实际上可以接受两个参数:一个参数是命令行参数的数量,另一个参数是所有命令行参数的完整列表。

      argcp:指向程序未修改的 argc 变量的指针。返回时, argcp 指向的值将被更新,因为 glutInit 提取任何用于 GLUT 库的命令行选项。 argv:程序未修改的来自 main 的 argv 变量。与 argcp 一样,argv 的数据将被更新,因为 glutInit 提取 GLUT 库可以理解的任何命令行选项。

      glutInit 也处理命令行选项,但具体的选项解析取决于窗口系统。

      【讨论】:

        【解决方案3】:

        使用它们是为了让 GLUT 可以处理命令行参数。它有许多始终使用的参数。如果您不希望 GLUT 处理参数,只需传递如下内容:

        {
          int argc = 1;
          char *argv[1] = {(char*)"Something"};
          glutInit(&argc, argv);
        }
        

        【讨论】:

        • 你能举个例子吗?我什么时候需要这些论点?
        • @paceman:在 Windows 上没有太多用处。但在其他操作系统上,您可以使用它们将创建的窗口发送到不同于默认显示的位置。 (标准 Xlib -display)选项。它还可以支持-geometry 选项来定义初始位置和窗口大小。
        • @peaceman:你永远需要他们。但它们可能很有用。如果你不需要这些论点,那么你可以按照我的建议去做。他们不允许你做任何你自己做不到的事情。
        猜你喜欢
        • 2014-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-04
        • 2016-08-19
        • 1970-01-01
        • 2021-03-09
        相关资源
        最近更新 更多