トップページ > 記事閲覧
拡大、縮小処理の相違は有りますか?
名前:マルチナ 日時: 2014/09/05 13:25

grahndle0=CreateGraphFromSoftImage(handle0)で グラフィックハンドルを作成した場合  DrawExtendGraph() DrawBillboard3d() どちらの関数でもgrhandle0を拡大、縮小して表 示可能と思いますが、2つの関数の処理で細かい 違いはあると思いますが、すごく大きな違いは 有りますでしょうか? 3Dバッファに画像データを 送り、グラフィックボードの拡大、縮小機能で 画像のサイズをリサイズいているという点では 同じと考えてよろしいでしょうか?  以上、よろしくお願いいたします。
メンテ

Page: 1 |

Re: 拡大、縮小処理の相違は有りますか? ( No.1 )
名前:管理人 日時:2014/09/07 12:43

> 2つの関数の処理で細かい違いはあると思いますが、すごく大きな違いは有りますでしょうか? DXライブラリの扱いとしては DrawExtendGraph は2Dの描画で、DrawBillboard3D は3Dの描画なので、 DrawExtendGraph は SetCameraPositionAndTarget_UpVecY などの3D描画用のカメラ設定の影響は受けませんが、 DrawBillboard3D は3D描画なので影響を受けます > 3Dバッファに画像データを送り、グラフィックボードの拡大、縮小機能で > 画像のサイズをリサイズいているという点では同じと考えてよろしいでしょうか? グラフィックボードレベルでは DrawBillboard3D では SetUseZBufferFlag( TRUE ) ; や SetWriteZBufferFlag( TRUE ) ; を実行してZバッファを使用する設定やZバッファに書き込む設定にしていた場合は DrawExtendGraph と異なりZテストやZバッファ書き込みが行われます Direct3Dレベルでは DrawExtendGraph では座標変換済み頂点を使用して描画しているのに対し、 DrawBillboard3D では座標変換前頂点を使用して描画しているという違いがあります ただ、最近のGPUでは必ず頂点シェーダーに相当する工程を経るとの話を聞いたことがあるので、 Direct3Dレベルでは座標変換済み頂点を使用していても、Direct3D内部もしくはグラフィックスデバイスドライバ内部で 態々それを座標変換前頂点として扱い頂点シェーダー相当の処理をGPUで行っているかもしれません
メンテ
Re: 拡大、縮小処理の相違は有りますか? ( No.2 )
名前:マルチナ 日時:2014/09/08 17:05

質問に関連してですが、GrHandleは int MV1SetTextureGraphHandle( int MHandle, int TexIndex, int GrHandle, int SemiTransFlag ) ; で、テクスチャとして使用可能になりますよね。  このとき、テクスチャとして使用する画像の高さ、幅は2のベキ乗という制限がありますよね?   grahndle0=CreateGraphFromSoftImage(handle0)で で、グラフィックハンドルを作る時は、確か横幅が4の倍数の制限はありましたが、2のベキ乗である必要はなかったと思います。  grahndle0=CreateGraphFromSoftImage(handle0)で作成したグラフィックハンドルは、DrawExtendGraphでもDrawBildbord3d()でも、特にテクスチャとしては扱われていないという理解でよろしいでしょうか?  逆に、2のベキ乗であれば 、MV1SetTextureGraphHandle()でテクスチャとして、貼り付けることが可能になるということでよろしいでしょうか?
メンテ
Re: 拡大、縮小処理の相違は有りますか? ( No.3 )
名前:管理人 日時:2014/09/09 00:41

> このとき、テクスチャとして使用する画像の高さ、幅は2のベキ乗という制限がありますよね? はい ただ、実は厳密にはそのような制限はありません、ですがあるとしておいたほうが 意図しない結果になってしまう事態を避けることができるのであるということにしています > grahndle0=CreateGraphFromSoftImage(handle0)で > で、グラフィックハンドルを作る時は、確か横幅が4の倍数の制限はありましたが そのような制限はありません リファレンスなどに記載されているとしたら誤りですので、よろしければ何処でその情報を 知ったか教えて頂けないでしょうか? > grahndle0=CreateGraphFromSoftImage(handle0)で作成したグラフィックハンドルは、 > DrawExtendGraphでもDrawBildbord3d()でも、特にテクスチャとしては扱われていないという理解でよろしいでしょうか? いえ、それは違います ソフトウエアレンダリングモードではない場合、グラフィックハンドルは内部では画像を全て IDirect3DTexture9 というテクスチャで持っています 2のべき乗ではないサイズの画像の場合は、その画像が収まる一番小さい2のべき乗サイズのテクスチャを使っています テクスチャを使わない画像の描画はソフトウエアレンダリングモードの場合のみです > 逆に、2のベキ乗であれば > 、MV1SetTextureGraphHandle()でテクスチャとして、貼り付けることが可能になるということでよろしいでしょうか? CreateGraphFromSoftImage で作成したどんなサイズのグラフィックハンドルも MV1SetTextureGraphHandle で使用することは可能です 前述の通り2のべき乗である必要はありませんが、同じく前述の通り恐らく2のべき乗でないと意図しない結果になってしまいますので、 2のべき乗の画像を持つグラフィックハンドルをお使いください
メンテ
Re: 拡大、縮小処理の相違は有りますか? ( No.4 )
名前:マルチナ 日時:2014/09/10 13:55

すいません。グラフィックハンドルでなく、handle0の画像が4の倍数でないと、画像にズレが生じるの記事を少し、間違って記憶していました。 //hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=3013
メンテ
Re: 拡大、縮小処理の相違は有りますか? ( No.5 )
名前:管理人 日時:2014/09/13 11:44

ご情報ありがとうございます
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存