2012-02-03 222 views
0

首先要做的事:平台是Windows 7 64位,语言是VC++,IDE是VS2010。显卡是nVidia GTX 460,驱动程序版本是290.53。OpenGL停止渲染

所以这里的情况。我目前使用Glew 1.7和Glut在OpenGL中工作。我前几天设置了一切,并成功地为我的课程编写了代码并完成了作业。这份任务运行得非常漂亮,并且显示出来并且完成了它应有的一切。那太棒了。所以我提交了我的任务,直到今晚才再次触碰它。

现在,今晚我试着再次运行代码,而不是我精美的棋盘格多边形,我得到一个普通的白色窗口。据我所知,自从我上次运行代码以来,没有任何与OpenGL相关的更改在我的系统上发生了变化。我根本没有改变代码,我没有改变图形驱动程序,我没有改变任何我知道的东西。我似乎无法找到与此类问题有关的任何事情,而且我可能会导致问题的解决。我甚至尝试过重新编译Glew,但它没有改变任何东西。我知道这不是一个代码问题,因为它几天前工作正常,没有任何改变,所以它必须是一个配置问题。

难道有人请指点我正确的方向吗?

编辑
还有一件事要补充。当我最初正在执行有问题的项目时,试图运行它会生成错误消息“无法找到glew32d.dll”,直到我将glew32d.dll和glut32.dll放到我的项目的源文件夹中。

现在,我不记得从我的项目文件夹中删除它们,但是当我昨晚试图调试它时,我注意到它们都从我的项目文件夹中消失了。但是,我没有得到任何.dll丢失的错误。将它们替换为文件夹并不能解决问题,但我想知道它们的消失是否与此有关。它们也位于VS2010安装路径的VC/bin /目录中,并且从两个位置删除它们都会产生错误消息,但现在已经足够用于构建和运行,因为之前我在两者中都需要它们。

+0

只是盲注,但你尝试重新安装显卡驱动程序..?其他OpenGL渲染效果很好..? – Sorceror 2012-02-03 07:44:21

+0

我只是想重新安装显卡驱动程序。不幸的是,它没有解决这个问题。据我所知,其他OpenGL渲染似乎没有问题。 – AboutAverage 2012-02-03 08:26:27

+0

所以它似乎在你的代码然后;] ..你有一些旧版本的代码..?尝试一下.. – Sorceror 2012-02-03 10:17:31

回答

0

一种可能性是,您正在通过无限值(1.#INF)进行缩放,或者是某种类型的东西。我遇到了一个非常相似的情况,结果这是问题所在。但是,如果您没有更改代码,那么您可以排除这一点。你是否尝试过投入一些代码来渲染一个简单的四边形或三角形到屏幕上?至于.dlls,我建议将它们放在C:/ Windows/SysWOW64和C:/ Windows/System32文件夹中。 SysWOW64特别容纳所有的32位.dll,但将它们放在两个位置是安全的。 Visual Studio会在您的项目文件夹和这些系统文件夹中查找必要的动态库。将它们放入系统文件夹的好处是,它们可用于您编写的所有OpenGL应用程序。

可能有助于发现问题的最后一件事是利用OpenGL的错误报告。您可以使用功能,如:

void HandleGLError() 
{ 
    GLenum error; 
    int i = 0; 
    while ((error = glGetError()) != GL_NO_ERROR) { 
     printf("GL ERROR(%d) %s\n",i,gluErrorString(error)); 
     i++; 
    } 
} 

尝试调用,在你的渲染功能的开始和结束,并在你想到的任何其他地方可能会引起问题。