我有一个OpenGL测试应用程序,它产生了令人难以置信的异常结果。当我启动应用程序时,它可能会或可能不会出现严重的图形错误。
它可能会生成如下图像: http://i.imgur.com/JwPoDrh.jpg
或者像这样: http://i.imgur.com/QEYwhBY.jpg
或者只是正确的图像,如下所示: http://i.imgur.com/zUJbwCM.jpg
场景由一个旋转的彩色立方体(由12个三角形组成)组成,上面有一个简单的着色器,根据模型空间坐标的绝对值为像素着色。垃圾面似乎与立方体一起旋转,就好像它们附着在它上面一样,通常垃圾三角形或四边形在屏幕上闪烁,就好像它们是在2D中渲染一样。
我觉得最不寻常的是这种行为是高度不一致的,重复启动完全相同的应用程序而不是我个人改变系统上的任何其他东西会产生不同的结果,有时会窃听,有时不会,垃圾的安排生成的面孔也不一致。
我无法真正发布应用程序的源代码,因为它非常冗长,实际的OpenGL调用遍布许多包装类等。
这是在以下条件下发生的:
Windows 10 64位操作系统(虽然我在Windows 8.1 64位下观察到非常类似的行为)。
AMD FX-9590 CPU(华硕Sabertooth 990FX主频为4.7GHz)。
AMD 7970HD GPU(已有几年历史了,偶尔3D应用程序中的屏幕区域会变得混乱,但没有什么比我在这里经历的那样)。
使用SDL(https://www.libsdl.org/)创建窗口和上下文。
使用GLEW(http://glew.sourceforge.net/)进行OpenGL。
使用OpenGL版本1.0,3.3和4.3(我假设SDL确实使用了我指示的版本)。
AMD Catalyst驱动程序版本15.7.1(驱动程序打包版本列为15.20.1062.1004-150803a1-187674C,尽管我在很多旧版驱动程序上看到过非常类似的行为)。
Catalyst Control Center将我的OpenGL版本列为6.14.10.13399。
答案 0 :(得分:3)
对我来说,这看起来像是一张破损的显卡。很可能是内存存在问题(内存本身或某些焊接问题)。如果由于某种原因设置内存操作的地址在开始读取之前没有完全解决或根本发生,那么您看到的工件就会发生;由于GPU和内存之间连接不良(焊接连接失败)或内存本身发生故障,可能会发生这种情况。
解决方案:购买新的显卡。您可以尝试使用回流过程重新焊接它时会发生什么;有一些关于如何做这个DIY的教程,但适当的回流炉可以提供更好的效果。