質問: MAP_FAILED){ perror("mmap"); free(bmpdata); return 1; } // LCDの画面表示を全て消去するために、 // 取得したアドレスから確保領域を0で初期化します。 memset(pfb, 255, SCREENSIZE); // LCDに画像を表示します。 draw_bmp(pfb, 5, 93, bmp.ih.biWidth, bmp.ih.biHeight, bmpdata); draw_bmp(pfb, 270, 93, bmp.ih.biWidth, bmp.ih.biHeight, bmpdata); draw_bmp(pfb, 535, 93, bmp.ih.biWidth, bmp.ih.biHeight, bmpdata); draw_bmp(pfb, 5, 252, bmp.ih.biWidth, bmp.ih.biHeight, bmpdata); draw_bmp(pfb, 270, 252, bmp.ih.biWidth, bmp.ih.biHeight, bmpdata); draw_bmp(pfb, 535, 252, bmp.ih.biWidth, bmp.ih.biHeight, bmpdata); // フレームバッファのために確保した領域を開放します。 munmap(pfb, SCREENSIZE); // フレームバッファをクローズします。 close(fd_fb); // 画像表示に必要なメモリ領域を開放します。 free(bmpdata); return 0; } ```
回答: こんにちは。 ループの中の処理を見ると、y行のデータをy行へ出力しているように見えます。 それですと、yを回す方向を逆にしても結果は同じと思います。 データを出力する側を修正すればうまくと思います。 現在> pfb[(y * 13 / 40 + y0) * SCREENWIDTH + (x * 13 / 40 + x0)] = RGB888(r, g, b); 修正> pfb[(h-1-(y * 13 / 40 + y0)) * SCREENWIDTH + (x * 13 / 40 + x0)] = RGB888(r, g, b);