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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
enikuro

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

#1

投稿記事 by enikuro » 11年前

画像データの各ドットの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です。)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 11年前

マルチポストと思われる記事を発見しました。
マルチポストであれば、相互リンクをお願いします。
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=3272

また、コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

enikuro
記事: 3
登録日時: 11年前

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

#3

投稿記事 by enikuro » 11年前

こちらにも投稿しました。
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配列からグラフィックハンドルを作成したい

#4

投稿記事 by softya(ソフト屋) » 11年前

行う変化の法則しだいですが、シェーダーに担当させるのが現実的な実装なのでは?と思いました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
a5ua
記事: 199
登録日時: 14年前

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

#5

投稿記事 by a5ua » 11年前

とんでもなく重いとおっしゃっていますが、現状どのくらい時間がかかっているのでしょうか?
また、目標としてどのくらい高速化したいのでしょうか?

enikuro
記事: 3
登録日時: 11年前

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

#6

投稿記事 by enikuro » 11年前

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


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

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#7

投稿記事 by みけCAT » 11年前

詳しいことはわからないですが、CreateGraphFromBaseImageという(隠し?)関数を使えば出来るかもしれません。
構造体の定義を見ると、画像の生データを投入できそうな感じがしました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

enikuro
記事: 3
登録日時: 11年前

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

#8

投稿記事 by enikuro » 11年前

一度、CreateGraphFromBaseImageを試して見ようと思います!!!
ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る