我目前正在为OpenGL框架编写BMP截图函数,并且遇到了将数据写出来的奇怪问题.从glReadPixelsBMP头引入的数据都是正确的,但似乎ofstream.write操作是随机插入无效值.
从图像的正确BMP(由Paint创建)和我的函数生成的BMP中摘录,突出显示不正确的字节.正确的行将始终是第一行.
行0x08C
3B 0D 4A 3A 0A 48 38 08 45 36
3B 0D 4A 3A 0D 0A 48 38 08 45
^^
Run Code Online (Sandbox Code Playgroud)
行0x0DC(此时已经关闭一个)
3E 2F 07 3D 2E 0A 3F 31 0E 44
07 3E 2F 07 3D 2E 0D 0A 3F 31
^^
Run Code Online (Sandbox Code Playgroud)
行0x0E68(非常下一行,然后关闭两行)
35 13 48 3A 10 44 36 0A 3F 31
0E 44 35 13 48 3A 10 44 36 0D
^^
Run Code Online (Sandbox Code Playgroud)
所以似乎有一种模式,其中无效值始终是,0x0D并且它被插入到a的前面0x0A.我不知道为什么会发生这种情况,因为我已经确认标题和数据glReadPixels …