画像データの各ドットのRGBA情報が格納されている配列があるとします。この配列から、グラフィックハンドルを低負荷で作成する良い方法はありませんか?
typedef struct{
int r, g, b, a;
}RGBA;
RGBA rgba[600][800]; //画像の色情報(0~255)が既に入っているものと仮定
//CPUで扱うイメージの作成
int Shandle = MakeARGB8ColorSoftImage(800, 600);
for (int y = 0; y < 600; y++){
for (int x = 0; x < 800; x++){
DrawPixelSoftImage(Shandle, x, y, rgba[y][x].r, rgba[y][x].g, rgba[y][x].b, rgba[y][x].a);
}
}
int Ghandle = CreateGraphFromSoftImage(Shandle);
の様に、1ドットづつ打ち込んでいって作成しています。ですが、これはとんでもなく重いコードなのでこのソースを出来るだけ軽くしたいです。
メモリー上にbmp形式のファイルを作り、それを読み込む方法を一度考えましたが、それではアルファチャネルが組み込めないので駄目でした。
600×800の画像のアルファ値を座標と時間により変化させ、アニメーション描画することを目的としています。(fpsは60です。)
RGBA配列からグラフィックハンドルを作成したい
Re: RGBA配列からグラフィックハンドルを作成したい
マルチポストと思われる記事を発見しました。
マルチポストであれば、相互リンクをお願いします。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3272
また、コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
マルチポストであれば、相互リンクをお願いします。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3272
また、コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: RGBA配列からグラフィックハンドルを作成したい
こちらにも投稿しました。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3272
尚、開発環境はvisual stadio 2013です。
DXライブラリをincludeしています。
以下同じ文面になりますが、再度投稿します。
画像データの各ドットのRGBA情報が格納されている配列があるとします。この配列から、グラフィックハンドルを低負荷で作成する良い方法はありませんか?
の様に、1ドットづつ打ち込んでいって作成しています。ですが、これはとんでもなく重いコードなのでこのソースを出来るだけ軽くしたいです。
メモリー上にbmp形式のファイルを作り、それを読み込む方法を一度考えましたが、それではアルファチャネルが組み込めないので駄目でした。
600×800の画像のアルファ値を座標と時間により変化させ、アニメーション描画することを目的としています。(fpsは60です。)
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3272
尚、開発環境はvisual stadio 2013です。
DXライブラリをincludeしています。
以下同じ文面になりますが、再度投稿します。
画像データの各ドットのRGBA情報が格納されている配列があるとします。この配列から、グラフィックハンドルを低負荷で作成する良い方法はありませんか?
typedef struct{
int r, g, b, a;
}RGBA;
RGBA rgba[600][800]; //画像の色情報が既に入っているものと仮定
//CPUで扱うイメージの作成
int Shandle = MakeARGB8ColorSoftImage(800, 600);
for (int y = 0; y < 600; y++){
for (int x = 0; x < 800; x++){
DrawPixelSoftImage(Shandle, x, y, rgba[y][x].r, rgba[y][x].g, rgba[y][x].b, rgba[y][x].a);
}
}
int Ghandle = CreateGraphFromSoftImage(Shandle);
の様に、1ドットづつ打ち込んでいって作成しています。ですが、これはとんでもなく重いコードなのでこのソースを出来るだけ軽くしたいです。
メモリー上にbmp形式のファイルを作り、それを読み込む方法を一度考えましたが、それではアルファチャネルが組み込めないので駄目でした。
600×800の画像のアルファ値を座標と時間により変化させ、アニメーション描画することを目的としています。(fpsは60です。)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: RGBA配列からグラフィックハンドルを作成したい
行う変化の法則しだいですが、シェーダーに担当させるのが現実的な実装なのでは?と思いました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: RGBA配列からグラフィックハンドルを作成したい
とんでもなく重いとおっしゃっていますが、現状どのくらい時間がかかっているのでしょうか?
また、目標としてどのくらい高速化したいのでしょうか?
また、目標としてどのくらい高速化したいのでしょうか?
Re: RGBA配列からグラフィックハンドルを作成したい
先ほどは20fps程度しか出ていませんでした。
目標としては、i3-3217uでも60fps近くの描画が出来る程度にはしたいところです。
ソースチューニングやコンパイル設定を変更して試してみたところ40fps程度でました。
そしてすいませんでした。あまりにも遅いと思っていました大きな原因はコンパイルする時の最適化の設定ミスがあったようです。
目標までもう少しありますがこの問題は、ほぼ解決しました。
目標としては、i3-3217uでも60fps近くの描画が出来る程度にはしたいところです。
ソースチューニングやコンパイル設定を変更して試してみたところ40fps程度でました。
そしてすいませんでした。あまりにも遅いと思っていました大きな原因はコンパイルする時の最適化の設定ミスがあったようです。
目標までもう少しありますがこの問題は、ほぼ解決しました。
Re: RGBA配列からグラフィックハンドルを作成したい
詳しいことはわからないですが、CreateGraphFromBaseImageという(隠し?)関数を使えば出来るかもしれません。
構造体の定義を見ると、画像の生データを投入できそうな感じがしました。
構造体の定義を見ると、画像の生データを投入できそうな感じがしました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: RGBA配列からグラフィックハンドルを作成したい
一度、CreateGraphFromBaseImageを試して見ようと思います!!!
ありがとうございます!
ありがとうございます!