Glut初始化函数 我只想问一下OpenGL和微软VisualStudioC++的函数GLUITIN。

Glut初始化函数 我只想问一下OpenGL和微软VisualStudioC++的函数GLUITIN。,c++,opengl,C++,Opengl,我查阅了GLUT文档,了解了它是如何使用: void glutInit(int *argcp, char **argv); 我在main.cpp文件顶部插入了这段代码,但出现了一个错误 当我跟踪错误时,它将我引导到以下代码块 /* GLUT initialization sub-API. */ GLUTAPI void APIENTRY glutInit(int *argcp, char **argv); #if defined(_WIN32) && !defined(GLUT

我查阅了GLUT文档,了解了它是如何使用:

void glutInit(int *argcp, char **argv);
我在main.cpp文件顶部插入了这段代码,但出现了一个错误

当我跟踪错误时,它将我引导到以下代码块

/* GLUT initialization sub-API. */
GLUTAPI void APIENTRY glutInit(int *argcp, char **argv);
#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)
GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int));
#ifndef GLUT_BUILDING_LIB
static void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); }
#define glutInit glutInit_ATEXIT_HACK
#endif
#endif
上面的代码是否已经声明了
glutInit
函数,然后您可以使用:

main.cpp中的void glutInit(int*argcp,char**argv)


要在其中添加其他函数,例如核心glut函数。

要在VS项目中添加OpenGL库,请执行以下操作:

  • 在项目上单击鼠标右键,然后选择“属性”
  • 打开配置属性-->C/C++-->预处理器
  • 在预处理器定义条目中,添加GLUT\U BUILDING\U LIB
  • 在运行库条目中,选择多线程(/MT)多线程调试(/MTd)
  • 打开配置属性-->链接器-->输入
  • 在附加依赖项条目中,添加glu32.lib;glui32.lib;glut32.lib;opengl32.lib
  • 在忽略特定的默认库条目中,添加libcd.lib
  • 请注意,根据您的OpenGL版本,您可能可以跳过步骤4和步骤7

    此外,尽管可能与您的问题没有直接关系,但以下是“我最喜欢的”初始化序列:

    void CreateSimulation();
    void DestroySimulation();
    void AdjustSimulation(int iWindowId);
    
    void OnIdle();
    void OnDisplay();
    void OnReshape(int iWidth,int iHeight);
    void OnSpecial(int iKey,int iX,int iY);
    void OnKeyboard(unsigned char iKey,int iX,int iY);
    void OnMouse(int iButton,int iState,int iX,int iY);
    
    void main()
    {
        int iWidth  = glutGet(GLUT_SCREEN_WIDTH);
        int iHeight = glutGet(GLUT_SCREEN_HEIGHT);
        glutInitWindowPosition(0,0);
        glutInitWindowSize(iWidth,iHeight);
        glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
        int iWindowId = glutCreateWindow(WINDOW_TITLE);
    
        CreateSimulation();
        atexit(DestroySimulation);
        AdjustSimulation(iWindowId);
    
        GLUI_Master.set_glutIdleFunc(OnIdle);
        GLUI_Master.set_glutDisplayFunc(OnDisplay);
        GLUI_Master.set_glutReshapeFunc(OnReshape);
        GLUI_Master.set_glutSpecialFunc(OnSpecial);
        GLUI_Master.set_glutKeyboardFunc(OnKeyboard);
        GLUI_Master.set_glutMouseFunc(OnMouse);
    
        glutMainLoop();
    }
    
    void CreateSimulation()
    {
        ...
    }
    
    void DestroySimulation()
    {
        ...
    }
    
    void AdjustSimulation(int iWindowId)
    {
        ...
    }
    
    void OnIdle()
    {
        ...
    }
    
    void OnDisplay()
    {
        ...
    }
    
    void OnReshape(int iWidth,int iHeight)
    {
        ...
    }
    
    void OnSpecial(int iKey,int iX,int iY)
    {
        switch (iKey)
        {
            ...
        }
    }
    
    void OnKeyboard(unsigned char iKey,int iX,int iY)
    {
        switch (iKey)
        {
            ...
        }
    }
    
    void OnMouse(int iButton,int iState,int iX,int iY)
    {
        switch (iButton)
        {
            ...
        }
    }
    

    我尝试创建void glutInit(int*argcp,char**argv);在VisualStudio中工作,但它抱怨错误不兼容。如何成功插入void glutInit(int*argcp,char**argv);那么在main.cpp文件中。您是否已在项目设置中将
    GLUT\u BUILDING\u LIB
    添加到预处理器定义中?没有。你是怎么做到的见我的问题(阅读“更新”部分)。此外,如果您愿意,我可以给您提供可能的GLUT和GLUI初始化序列(但我必须在回答中这样做,这与这个问题不完全对应)。