GraphFilterの階調反転について

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

GraphFilterの階調反転について

#1

投稿記事 by コレジャナイ » 13年前

再び失礼致します。

絵を描画した後、上書き階調反転した絵を重ね、白くさせたいと思っていたのですが、上手くいきません。
LoadDivGraphで作成されたグラフィックハンドルを用いているのですが、添え字が0の絵以外がバグを起こしてしまいます。
(動作が止まる訳ではなく、描画した絵が歪な絵に置き換えられて描画されてしまいます)

以下該当部分のソースを貼ります

コード:

DrawGraph( xの座標, yの座標, GHcharacter_p[number],TRUE);
SetDrawBlendMode(DX_BLENDMODE_ADD , 255);
GraphFilter( GHcharacter_p[number], DX_GRAPH_FILTER_INVERT );
DrawGraph( xの座標, yの座標, GHcharacter_p[number],TRUE);
GraphFilter( GHcharacter_p[number], DX_GRAPH_FILTER_INVERT );
GHcharacter_pは描画対象のキャラクターに応じてグラフィックハンドルを挿入する関数からポインタ形式で受け取ってきたものです。

↑のコードと全く同じでグラフィックハンドルのみポインタを経由してないものを使用した所、歪な色の絵は表示されませんでしたが、透過部分も一緒に白くなってしまいました。
(添え字が0の時のみ正常)

GraphFilterが二つ置いてあるのは、一度絵の色調を反転した後、色調を元に戻そうという意図です。


抽象的な質問となってしまい申し訳御座いません。

コレジャナイ

Re: GraphFilterの階調反転について

#2

投稿記事 by コレジャナイ » 13年前

[追記]
先程のコードの終わりにSetDrawBelendMode(DX_BLENDMODE_NOBLEND, 0 );を付け忘れていましたので追記致します。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: GraphFilterの階調反転について

#3

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

この場合、SetDrawBlendModeのDX_BLENDMODE_INVSRCを使えるのでGraphFilterを使うべき場面ではありません。
GraphFilter()でも出来ないわけじゃないと思うので問題は別原因かも知れません(DXライブラリ自体のバグなど)があえて遅くなりそうな物を使う必要はないと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: GraphFilterの階調反転について

#4

投稿記事 by コレジャナイ » 13年前

あぁ、なるほど
加算モードと一緒に使えないからと選択肢から除外してましたが、書き方を変えれば良いだけでしたorz

無事表示出来ました。
有難う御座いますm(_ _)m

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: GraphFilterの階調反転について

#5

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

ふと思いついたのは、GHcharacter_pで扱っていたのはLoadDivGraphで読み込んでいたものでしょうか?
だとしたら、LoadDivGraphで読み込んだものは内部的には一枚の絵のはずなのでハンドルごとにGraphFilterを掛けるとおかしくなるのかも知れませんよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コレジャナイ

Re: GraphFilterの階調反転について

#6

投稿記事 by コレジャナイ » 13年前

>>ソフト屋さん
おっしゃる通りLoadDivGraphで取り込んだもので、これが原因なのでしょうか。
(別の場所で既にデバッグはしていたのですが、透過部分含めて全て白くなってしまっていたので・・・)

GraphFilterの引数でグラフィックハンドルのアドレスを渡す事は出来ませんよね?
GraphFilterのリファレンスにもLoadDivGraphについての記載が無いですし、仮にLoadDivGraphで透過情報が扱えないとなるとかなり使い辛いかもしれません・・・。
(ほとんどの画像がLoadDivGraphで取り込んでますので)

無理をして使うべき関数では無い様ですから、要らぬ心配な気もしますが。

[追記]
私信を送らせて頂きました。

閉鎖

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