実際に絵を描いている関数に以下のようなものを挿入します。 具体的にはglutSwapBuffers();のすぐ下辺りです。 緑色で書いた番号は説明の便宜上付けたもので 実際のプログラムには書いてはいけません。
void display() { 1: int pix_i, pix_j, pix_k; 2: FILE *ppmf; 3: GLubyte piximage[PIXSIZE_Y][PIXSIZE_X][3]; 4: glReadPixels(0, 0, PIXSIZE_X, PIXSIZE_Y, GL_RGB, GL_UNSIGNED_BYTE, piximage); 5: ppmf=fopen("test.ppm","w"); 6: fprintf(ppmf,"P6\n"); 7: fprintf(ppmf,"%d %d\n",PIXSIZE_X,PIXSIZE_Y); 8: fclose(ppmf); 9: ppmf=fopen("test.ppm","ab"); 10: fputc(50,ppmf); 11: fputc(53,ppmf); 12: fputc(53,ppmf); 13: fputc(10,ppmf); 14: for(pix_j=0;pix_j<PIXSIZE_Y;pix_j++) 15: for(pix_i=0;pix_i<PIXSIZE_X;pix_i++) 16: for(pix_k=0;pix_k<3;pix_k++) 17: fputc(piximage[PIXSIZE_Y-1-pix_j][pix_i][pix_k],ppmf); 18: fclose(ppmf); } /* display end */解説
落した画像ファイルからアニメーションを作る方法は別の機会に紹介します。
[目次に戻る]