过剩初始化函数
Glut Initialisation Function
我只是想特别问一下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库:
- 右键单击项目,选择Properties。
- 打开配置属性-> C/c++ ->预处理器.
- 在预处理器定义条目中,添加GLUT_BUILDING_LIB。
- 在Runtime Library条目中,选择多线程(/MT)或多线程调试(/MTd)。
- 打开配置属性->链接器->输入。
- 在Additional Dependencies条目中,添加glu32.lib; glu32.lib; glut32.lib;opengl32.lib。
- 在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)
{
...
}
}
相关文章:
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 如何在 C++ 中使用它的构造函数初始化 unique_ptrs 的 2D 向量?
- 我们是否需要为 C++ 中的多个函数初始化多个模板?
- 在C++中使用默认构造函数初始化对象的不同方法
- 使用默认构造函数初始化对象的不同方法
- 我们可以用参数化构造函数初始化结构的数组吗?
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 类内初始化与构造函数初始化列表的顺序
- 通过 C++ 中的重载构造函数初始化未知类型的变量
- 使用复制构造函数初始化 new[]
- 如何从子类的构造函数初始化父类的私有成员
- 在构造函数初始化列表中使用 std::variant
- 使用构造函数初始化结构还是在之后设置其值更好?
- C++ 没有匹配的构造函数初始化 []
- 我正在使用dev c ++,但收到错误(C++98'array'必须由构造函数初始化)
- 如何从静态类函数初始化静态类对象
- 使用所述填充构造函数初始化向量中的向量
- 如何同时创建一个具有两个或多个构造函数初始化的对象
- 使用 c++ 中的函数初始化数组
- 使用 lambda 函数初始化静态数据成员