OpenGL/MFC下使用gluscaleimage发生的诡异事情

这件诡异事情必须在这里记下,奇怪了,现在还不知道是哪里出了问题,弄了快一整天了,上篇关于这个东西的随笔中显然已经搞定了这件事情,即用CImage来读取PNG图片,然后用gluscaleimage来放缩,最后用glTexImage2D来显示。可过了段日子重新弄的时候,发现不可以了,会报错,说是GLU32.dll这个模块出错了,Debug时候有该错误字样:OpenGLPlat.exe 中的 0x6ec470e5 处最可能的异常: 0xC0000005: 读取位置 0x06be6000 时发生访问冲突。换张PNG图片试试,显示出来图形的形状呈抽丝状,颜色也出现问题,就不上图了。

后来发现是gluscaleimage这个函数处理的时候出了错误,可奇怪的是,不可以的图片,可以通过先加载张可以的图片,然后再加载下不可以的图片,然后这张不可以的图片就可以显示了。本来想重新截张可以的PNG图片,来将就着使用,可发现怎么弄也不行。于是怀疑是DLL的问题,但也不知道怎么去弄了,就放着那儿了。

想起上回说到可以不用放缩来纹理映射显示任意分辨率的图片,那个时候记得是通过引用库来做到的,幸运的,今天在网上看到了,就是用另外一个函数来弄,这个函数就是gluBuild2DMipmaps,mipmap是多级映射的意思,是通过多级映射来实现任意分辨率的映射?

总之,终于可以了,先用这个函数吧,那个问题真是纠结。。。MD!!!

原文地址:https://www.cnblogs.com/litstrong/p/1959546.html