我前段时间写了一篇关于MFC界面框架下,OpenGL全屏抗锯齿的文章。原以为这份代码可以方便的使用了,没想到今天就出问题了。这也许不能算在代码上的bug,或许是硬件的原因。今天我换了台电脑尝试了下,出现了很奇怪的现象,调试了很久才找到原因是开启了多重采样。这个调试过程也是让我非常痛苦的,写图形学程序对调试的经验和功底要求真的不浅啊。
我只能猜测是硬件的原因了。在学校里的时候,实验室的机器上运行得好好的,但是在这台电脑上就不行。这台电脑确实有点不一样,是妹子的mac,被我装了windows7在用着。估计是硬件不一样吧。再说我的多重采样是参照nehe的实现方法,也许实现方法不太兼容了。
有必要展示下这个奇葩的结果。
从图片可以看出,本应该被遮挡的部分显示出来了。这个也不像完全是透明混合的效果,也不是深度测试的原因。总之是很奇怪的结果,我也调试过深度测试和混合,都没有用。最后,经过一番调试才知道是因为开启多重采样的原因。
只能把多重采样去掉,效果才显示正常了,并且程序的其它部分才正常,比如鼠标点和模型求交等。
在这里,不能不再次感叹调试的力量。我今天是实在没办法了,只能把以前版本的代码下载下来,替换不同的文件才找到bug的所在。因为当工程里面代码量太大的时候,注释掉某些部分,vs已经不一定会正确生成结果了,这种事情只能全部重新生成,才能保证代码真的更新了。
调试功底真的很重要。比如文件替换来排查错误的所在,打log,调试状态查看内存等。没有强悍的调试手段,很多事情真的是继续不下去的。
MFC框架下OpenGL多重采样的bug
- 本文链接: http://xiaopengcheng.top/2014/03/10/MFC框架下OpenGL多重采样的bug/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!