Glut初始化功能

时间:2014-03-20 21:52:53

标签: c++ opengl

我只想特别询问OpenGL和Microsoft Visual Studio C ++中的函数glutInit。

我正在查看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函数,其次可以使用:

void glutInit(int *argcp, char **argv)

中的

main.cpp

在其中添加其他功能,例如核心过剩功能。

1 个答案:

答案 0 :(得分:1)

为了在VS项目中添加OpenGL库:

  1. 右键单击该项目,然后选择属性
  2. 打开配置属性 - > C / C ++ - >预处理器
  3. 预处理程序定义条目中,添加 GLUT_BUILDING_LIB
  4. 运行时库条目中,选择多线程(/ MT)多线程调试(/MTd).
  5. 打开配置属性 - >链接器 - >输入
  6. 附加依赖项条目中,添加 glu32.lib; glui32.lib; glut32.lib; opengl32.lib
  7. 忽略特定默认库条目中,添加 libcd.lib
  8. 请注意,根据您的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)
        {
            ...
        }
    }