第一件事:平台是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 /目录中,并且从两个位置删除它们会产生错误消息,但是在以前我需要它们时,将它们放在任一位置都足以构建和运行。 / p>
答案 0 :(得分:0)
一种可能性是你按无限值(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++;
}
}
尝试在渲染函数的开头和结尾调用它,并在您认为可能导致问题的任何其他位置调用它。