c - 是否可以将 glutInit 移至我的 init 函数?

标签 c opengl glut

我使用 glut 将这样的 main 函数用于我的 C 程序(它有效):

int main(int argc, char **argv)
{
  char filename[MAXLINE];

  /* Read in the file (allocates space for Picture) */
  if (argc < 2) 
    {
    printf ("Enter the name of a PPM or PGM file: ");
    scanf("%s", filename);
    readPPM ((char *)filename, &Picture);
    }
    else { readPPM (argv[1], &Picture); }

    glutInit(&argc, argv);
    MyInit();
    glutPassiveMotionFunc(PassiveMouseMotion); // mouse move with no key pressed 
    glutReshapeFunc(Reshape);
    glutDisplayFunc(Draw);
    glutKeyboardFunc(Key);

    glutMainLoop();
    return 0;
}

是否可以将一些代码移至 myInit 函数并使用:

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

    MyInit(@argc, argv);
    glutPassiveMotionFunc(PassiveMouseMotion); // mouse move with no key pressed 
    glutReshapeFunc(Reshape);
    glutDisplayFunc(Draw);
    glutKeyboardFunc(Key);

    glutMainLoop();
    return 0;
}

(上面的代码不起作用,这是一个命题)

??

最佳答案

可能吗?是的。好主意?不知道。我想将所有与 init 相关的代码放在一个地方可能会很好。

如果 MyInit 声明为

void MyInit(int argc, char *argv[]) {
    glutInit(&argc, argv);
    // other init code etc... 
}

您应该能够使用以下方式从main调用它:

MyInit(argc, argv);

我怀疑 glutInit 关心它是从哪个函数调用的,只要以正确的方式调用它,并且在执行任何 GL 操作之前即可。

关于c - 是否可以将 glutInit 移至我的 init 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22891037/

相关文章:

char类型按位运算失败转int

c++ - 将 GLEW 添加到项目 (CMake)

c++ - 在 Mac 上使用 OpenGL 编译着色器时出现 "version not supported"错误

c++ - 如何与opengl并行运行程序

c - 制作模拟 UNIX shell

c - 8 字节 double 作为 uint64_t 的二进制字符串

C内存管理错误?

c++ - 使用 OpenCV 和 OpenGL 读取 MP4

c - 在 Linux 中使用 glut 调整窗口大小时显示错误

c++ - X 请求失败错误 : GLXBadFBConfig