OpenGL跳过visual studio上的主要功能
OpenGL skips main function on visual studio
我正试图在Visual Studio 2010中运行以下c++opengl代码。我正在使用openglut作为opengl实用工具工具包。
#include <iostream>
#include <glopenglut.h>
using std::cout;
using std::endl;
void RenderScene()
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void SetupRC()
{
glClearColor(0, 0, 1.0f, 1.0f);
}
int main(int argc, char* argv[])
{
cout << "Test1" << endl;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Simple");
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
cout << "Test2" << endl;
return 0;
}
代码编译正确,但当我在没有调试的情况下运行时,控制台上不会显示任何内容。当我在第一个cout语句处创建一个断点并在调试时运行时,它不会在断点处停止。它似乎跳过了主要功能。在我注释掉2个cout语句和clean解决方案之间的供过于求、gl语句后,它的行为正确(在断点处停止)。如果我不清理解决方案,它的行为就不正确,但我看到visual studio在我做了更改后正在编译代码。这些奇怪的行为只有在我包含opengl代码时才会发生。在我正常进行更改后,我不需要清洗溶液。这是什么原因?
通常,函数glutMainLoop
不会返回。当您关闭窗口时,该函数将完全停止应用程序。因此,在该函数调用之后,将不会执行任何操作。
即使以后的代码要执行,也只有当您关闭窗口时才会执行。glutMainLoop
是坐着等待你对窗户做事情的东西。当窗口中发生事件(鼠标移动、鼠标单击、显示需要更新、计时器等)时,它会调用您注册的回调函数。
把它想象成一个while(true)
循环。
原来我应该把freeglut.dll文件放在可执行文件附近。在我把它放进system32文件夹之前,不要把东西弄得一团糟。代码现在可以工作了。Visual Studio本应给出某种错误,但它没有显示任何错误或警告。
相关文章:
- 无论我使用什么,我的输入都会被跳过
- C++ If/Else 语句被跳过
- 转换器练习:跳过 if 语句和 if 语句
- C++ cin.ignore() 跳过循环
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- CIN 仅在输入非数字值时跳过下一个 CIN
- 提升精神 x3 解析为结构,如果它为空,则跳过成员
- 在 if 语句中使用 GetKeyState 时,它会跳过条件
- 而循环跳过 cin.getline() 对于 C 字符串
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- 如果以下行不包含决策或分支,GDB 无法单步跳过函数
- 跳过输入并输出 garabge 值
- 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- Vigenere密码的C++功能有时才起作用(适用于某些输入,跳过其他输入的班次)
- 按回车键继续或跳过功能
- 我的功能跳过C 中的循环参数
- 跳过初学者C++功能:没有错误
- C++跳过功能
- OpenGL跳过visual studio上的主要功能
- CMake:"AUTOMOC"功能跳过可执行目标的来源?