void saveSceneImage(int x,int y,int width, int height, int SaveNum)
{
//glGetIntegerv(GL_VIEWPORT,ViewPort);
int ColorChannel = 4; // 位图文件通道数,RGB // !!!原来为3,在全屏时会出问题
int bufferSize = width*height*sizeof(GLubyte)*ColorChannel;
char * ImgData = new char[bufferSize]; // (!!!!!!!!!bufferSize要再大一点,否则在全屏的时候会出现内存溢出问题)
// OpenGL 相关
glPixelStorei(GL_UNPACK_ALIGNMENT,4); // 4字节对齐
glReadPixels(x,y,width,height,GL_BGR_EXT,GL_UNSIGNED_BYTE,ImgData); //从图像缓存里读取一块数据到内存
//ColorReverseChar(ImgData,width,height);
BITMAPFILEHEADER hdr;
BITMAPINFOHEADER infoHdr;
// 我们只需要关心位图的尺寸,其他值默认就好了
infoHdr.biSize = sizeof(BITMAPINFOHEADER);
infoHdr.biWidth =width;
infoHdr.biHeight = height;
infoHdr.biPlanes = 1;
infoHdr.biBitCount = 24;
infoHdr.biCompression = 0;
infoHdr.biSizeImage =w
CRT detected that the application wrote to memory after end of heap buffer
最新推荐文章于 2023-11-18 10:23:44 发布