【发布时间】:2010-08-12 17:21:25
【问题描述】:
我遇到了奇怪的问题,崩溃是随机发生的,例如我设法使用 3d 应用程序一段时间而没有崩溃,然后大多数时候它总是在我突然同时渲染很多对象时崩溃.
我最近注意到,当使用巨大的纹理尺寸和大量纹理尺寸并在一帧中从一个切换到另一个时,更改此 ATI 卡上的巨大纹理表面会使我的整个计算机崩溃。因此,我有可能损坏了 ATI 卡或只是有问题的卡。但这是不可能的,因为我最近添加了一些代码,现在我第一次注意到这个崩溃。我没有使用任何特殊的 opengl 调用,只是使用旧的 glbegin() glend() glcolor() 等...
如果我注释掉之前崩溃的行,例如 glBegin(GL_QUADS) ... glEnd() 那么下次我在代码的不同位置调用不同的 openGL 函数时崩溃,例如 glColor4f() 和然后我将其注释掉,下一次崩溃是在渲染代码的完全不同部分的 glClear() 处!
什么可能导致这些?我正在使用 ATI 卡,并且我知道如果使用不正确的值,某些 opengl 调用可能会使程序崩溃,例如 glLineWidth(4) 会在 openGL 代码的随机行上使某些 ATI 卡崩溃,因为最大线宽为 3!
编辑:
当我使用 ApplicationVerifier 在调试模式下运行程序时,它会抛出这一行:
if(!(PixelFormat = ChoosePixelFormat(hDC, &pfd))){
我不明白,这可能是什么问题?
pfd:
static PIXELFORMATDESCRIPTOR pfd = {
// *correct amount of elements*
};
【问题讨论】:
-
最好的办法是在另一台 GPU 的计算机上尝试你的程序,看看它是否也会崩溃
标签: c++ windows visual-studio-2008 opengl