【发布时间】:2025-11-23 23:40:02
【问题描述】:
我正在尝试在 Visual Studio 2010 中运行以下 c++ opengl 代码。我使用 openglut 作为 opengl 实用工具包。
#include <iostream>
#include <gl\openglut.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 解决方案之间的 glut,gl 语句之后,它的行为正确(在断点处停止)。如果我不清理解决方案,它的行为就会不正确,但我看到 Visual Studio 在我进行更改后编译代码。这些奇怪的行为只有在我包含 opengl 代码时才会发生。正常进行更改后,我不需要清洁解决方案。这是什么原因?
【问题讨论】:
-
难道Glut没有自己的main方法吗?而你,作为实施者,只是应该实施某些其他方法吗? (凭记忆说,我已经很久没有看过 Glut 了,所以可能是完全错误的/考虑不同的框架......)
-
我是opengl的新手,但我直接从“OpenGL SuperBible 4th Edition”一书中拿了这个例子,所以它应该是正确的。
-
@TJMonk15:没有 GLUT 不提供 main。
-
@TJMonk15:不,GLUT 没有自己的 Main。如果 OpenGLUT 有,那么这就是与标准 GLUT 布局的偏差。
-
我可以尝试任何建议来找出问题所在
标签: c++ visual-studio opengl glut