トップページ > 記事閲覧
描画対象の画像を他データとともに一つのファイルにするには
名前:アザラシ 日時: 2016/10/27 10:14

関数MakeScreenによって作成された透明情報を持たない描画対象を、なんらかの方法でセーブデータとしてファイル出力したいと考えています。 ただし、他のデータもまとめて一つのセーブデータファイルとして出力したいのです。 関数SaveDrawScreenでは画像のみを出力するため、他のデータを同時に保存することができません。 また別の方法として、 関数MakeScreenで作成したスクリーンサイズと同じサイズのunsigned intの配列を作り、 そこに関数GetPixelで画像の全ての座標の色コードを保存し、その後、配列をfwrites等でファイルに出力する方法がありますが、 リファレンスではGetPixelは非常に時間がかかり、多用はしない方が良いとのことなので、好ましくない方法なのではと思いました。 何か他に良い方法、あるいは効率的な方法はありますか? ご教授願います。
メンテ

Page: 1 |

Re: 描画対象の画像を他データとともに一つのファイルにするには ( No.1 )
名前:管理人 日時:2016/10/29 02:26

GetPixel よりも高速に描画対象の画像を読み取る方法として「CPUで扱うイメージ」を使う方法があります // 「CPUで扱うイメージ」を作成 int SoftImage = MakeXRGB8ColorSoftImage( 幅, 高さ ) ; // 描画先の画像情報を「CPUで扱うイメージ」に取り込み GetDrawScreenSoftImage( 0, 0, 幅, 高さ, SoftImage ) ; // GetPixelSoftImage でピクセル情報を読み取り for( int i = 0; i < 高さ; i ++ ) { for( int j = 0; j < 幅; j ++ ) { int r, g, b, a ; GetPixelSoftImage( SoftImage, j, i, &r, &g, &b, &a ) ; } } // 不要になったら削除 DeleteSoftImage( SoftImage ) ; 「CPUで扱うイメージ」の画像情報は CPU が高速にアクセスできるシステムメモリ上に保存されているので、 GetPixelSoftImage による画像情報へのアクセスは GetPixel よりもずっと高速に行うことができます よろしければお試しください m(_ _)m
メンテ
Re: 描画対象の画像を他データとともに一つのファイルにする ( No.2 )
名前:アザラシ(解決) 日時:2016/10/30 23:24

ご回答ありがとうございます。 描画対象をCPUイメージに変換するGetDrawScreenSoftImage()という便利な関数があるのですね。 使用例も挙げて頂き、大変感謝です! ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存