トップページ > 過去ログ > 記事閲覧
半透明+回転
名前:かなえ 日時: 2007/09/07 19:16

はじめまして。日付ソート式の方の掲示板に同じ内容で書き込みをしていましたが、こちらの方が相応しそうなので移動します。 初歩的な質問ですが、お答え下さればありがたいです。 draw系の関数を使って、アルファブレンドと回転描画を同時に行うことはできないのでしょうか? DrawBlendGraphでは回転できなくて困っています。

Page: 1 |

Re: 半透明+回転 ( No.1 )
名前:通りすがり 日時:2007/09/08 00:00

そもそも、使用する関数が違っております。 DrawBlendGraphは主に画面の切り替えのために使用する特殊な関数で、通常描画には使いません。 アルファブレンドを行うには、まずSetDrawBlendModeで描画モードを変えます。 例えばSetDrawBlendMode(DX_BLENDMODE_ALPHA, 127)とすると、描画モードが透過度50%のアルファブレンドに変わります。 あとは描画命令を実行すれば、半透明の画像が描画できます。 (SetDrawBlendModeはDrawGraph〜DrawRectGraphの、一般描画系関数全てに適応される)
Re: 半透明+回転 ( No.2 )
名前:かなえ 日時:2007/09/08 00:50

通りすがりさん、ありがとうございます。 アルファブレンドというのは2枚の画像(通常の画像+マスク画像)を合成して部分的に半透明描画を行うことだと認識していますが、 通りすがりさんの仰っているのは画像全体の透過率を設定する方法ではないのでしょうか?
Re: 半透明+回転 ( No.3 )
名前:通りすがり 日時:2007/09/08 04:00

アルファブレンドは「α値を用いた合成=透過及び半透明処理」を意味します。 透過および半透明合成が関わる処理は全てアルファブレンドに分類されます。 (ただ、一般的には半透明合成のみを指す場合が多いです) その手法には大きく二通りあり、一つは転送時のα値を設定して画像を透過転送する方法、 もう一つは画像そのものに画素毎のα値(αチャンネル)を埋め込ませておく方法です。 (かつてはα情報をマスク画像として別に用意する方法がありましたが、  αチャンネル付きフォーマットを利用できる環境の場合は煩雑さから通常用いられません) また、この両者を組み合わせることもあります。 画像の一部を透過させたい場合、透過箇所が固定であるのならαチャンネル付きの画像フォーマットを予め用意することで対処できます。 透過箇所を動的に計算し、かつ回転などをさせたいとなると恐らく相当難しいことになるかと思います。 (DrawBlendGraph自体、ユニバーサルトランジション以外での使用法は想定外かと思われますし)
Re: 半透明+回転 ( No.4 )
名前:憂煉 日時:2007/09/08 13:24

要するにSetDrawBrendMode関数でαブレンディングを有効にしてから、透過PNG画像かαブレンド画像 (001.bmpというファイルを読み込んだとすると、001_a.bmpというファイルがあれば001.bmpの透過情報として自動で読み込まれる。これはDXライブラリ固有の機能) を通常描画系関数で描画するのが手っ取り早いという事です。
Re: 半透明+回転 ( No.5 )
名前:かなえ 日時:2007/09/08 19:50

通りすがりさん、憂煉さん、ありがとうございました。 理解できました。

Page: 1 |