【问题标题】:OpenGL stopped renderingOpenGL 停止渲染
【发布时间】:2012-02-04 16:39:05
【问题描述】:

第一件事:平台是Windows 7 64位,语言是VC++,IDE是VS2010。显卡为nVidia GTX 460,驱动为290.53版本。

所以情况就是这样。我目前正在使用 Glew 1.7 和 Glut 在 OpenGL 中工作。几天前,我设置了所有内容,并成功编写代码并完成了我的课程作业。作业运行得很漂亮,展示得很好,并做了它应该做的一切。那太棒了。所以我提交了我的作业,直到今晚才再次碰它。

现在,今晚我再次尝试运行代码,而不是我精美的镶嵌多边形,我得到一个纯白色的窗口。据我所知,自从我上次运行代码以来,我的系统上没有任何与 OpenGL 相关的变化。我根本没有更改代码,我没有更改图形驱动程序,我没有更改任何我知道的东西。我似乎找不到与此类问题相关的任何内容,而且我不知道可能导致该问题的原因。我什至尝试重新编译 Glew,但它并没有改变任何东西。我知道这不是代码问题,因为它几天前工作正常并且没有任何改变,所以它必须是配置问题。

有人可以指点我正确的方向吗?

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

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

【问题讨论】:

  • 只是瞎拍,但是你有没有试过重新安装显卡驱动..?其他 OpenGL 渲染效果很好..?
  • 我刚刚尝试重新安装显卡驱动程序。不幸的是,它没有解决问题。据我所知,其他 OpenGL 渲染似乎还不错。
  • 所以它似乎在你的代码中 ;].. 你有一些旧版本的代码..?试试看..
  • 我尝试使用我为作业提交的代码重新运行它,这是我在上次成功运行后立即提交的。结果相同。从那以后我什么都没有改变。我的教授也将运行代码并尝试帮助我确定我的代码中是否发生了一些奇怪的事情,或者我是否只是在尝试编译乱码时出现工作输出的幻觉。

标签: opengl rendering


【解决方案1】:

一种可能性是您正在按无限值 (1.#INF) 或类似的值进行缩放。我遇到了非常相似的情况,结果证明是问题所在。但是,如果您没有更改代码,那么您可以排除这种情况。您是否尝试过输入一些代码来在屏幕上呈现一个简单的四边形或三角形?

至于 .dll,我建议将它们放在 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++;
    }
}

尝试在渲染函数的开头和结尾以及您认为可能导致问题的任何其他地方调用它。

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2016-12-26
    • 2013-08-06
    相关资源
    最近更新 更多