过剩初始化函数

Glut Initialisation Function

本文关键字:函数 初始化      更新时间:2023-10-16

我只是想特别问一下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函数,其次,你可以使用:

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

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

  1. 右键单击项目,选择Properties
  2. 打开配置属性-> C/c++ ->预处理器.
  3. 预处理器定义条目中,添加GLUT_BUILDING_LIB
  4. Runtime Library条目中,选择多线程(/MT)多线程调试(/MTd)
  5. 打开配置属性->链接器->输入
  6. Additional Dependencies条目中,添加glu32.lib; glu32.lib; glut32.lib;opengl32.lib
  7. Ignore Specific Default Libraries条目中,添加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)
    {
        ...
    }
}