void screenshot(const char *filename,GLint width,GLint height){static const GLubyte BMP_24_HEAD[] = {0x42,0x4d,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};FILE *save;GLubyte *pixelsData;size_t pDlen = height*(width*3+(4-width*3%4)%4);size_t fTlen = 54+pDlen;if((pixelsData=(GLubyte *)malloc(pDlen))==NULL) exit(0);if((save=fopen(filename,"wb"))==NULL) exit(0);glPixelStorei(GL_UNPACK_ALIGNMENT,4);glReadPixels(0,0,width,height,GL_BGR_EXT,GL_UNSIGNED_BYTE,pixelsData);fwrite(BMP_24_HEAD,sizeof(BMP_24_HEAD),1,save);fseek(save,2,SEEK_SET);fwrite(&fTlen,sizeof(fTlen),1,save);fseek(save,18,SEEK_SET);fwrite(&width,sizeof(width),1,save);fwrite(&height,sizeof(height),1,save);fseek(save,34,SEEK_SET);fwrite(&pDlen,sizeof(pDlen),1,save);fseek(save,0,SEEK_END);fwrite(pixelsData,pDlen,1,save);fclose(save);free(pixelsData);}
2012年05月25日 13点05分
9