ページ 11

RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月26日(水) 22:08
by enikuro
画像データの各ドットの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です。)

Re: RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月26日(水) 22:14
by みけCAT
マルチポストと思われる記事を発見しました。
マルチポストであれば、相互リンクをお願いします。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3272

また、コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。

Re: RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月26日(水) 22:31
by enikuro
こちらにも投稿しました。
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です。)

Re: RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月26日(水) 22:56
by softya(ソフト屋)
行う変化の法則しだいですが、シェーダーに担当させるのが現実的な実装なのでは?と思いました。

Re: RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月26日(水) 23:05
by a5ua
とんでもなく重いとおっしゃっていますが、現状どのくらい時間がかかっているのでしょうか?
また、目標としてどのくらい高速化したいのでしょうか?

Re: RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月26日(水) 23:37
by enikuro
先ほどは20fps程度しか出ていませんでした。
目標としては、i3-3217uでも60fps近くの描画が出来る程度にはしたいところです。
ソースチューニングやコンパイル設定を変更して試してみたところ40fps程度でました。


そしてすいませんでした。あまりにも遅いと思っていました大きな原因はコンパイルする時の最適化の設定ミスがあったようです。
目標までもう少しありますがこの問題は、ほぼ解決しました。

Re: RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月26日(水) 23:51
by みけCAT
詳しいことはわからないですが、CreateGraphFromBaseImageという(隠し?)関数を使えば出来るかもしれません。
構造体の定義を見ると、画像の生データを投入できそうな感じがしました。

Re: RGBA配列からグラフィックハンドルを作成したい

Posted: 2014年3月27日(木) 00:05
by enikuro
一度、CreateGraphFromBaseImageを試して見ようと思います!!!
ありがとうございます!