Re: ポリゴンのα=0(抜き)のZ値について ( No.1 ) |
- 名前:トム 日時:2011/03/06 16:38
追記します。
画像にアルファ成分があり、存在するアルファ値は最小(0)と最大(255)のみ
0の部分はZ-BufferのZ値が更新されず、255の部分はZ値が更新されるようになってほしい
よろしくお願いします。
|
Re: ポリゴンのα=0(抜き)のZ値について ( No.2 ) |
- 名前:管理人 日時:2011/03/21 17:11
Direct3D の固定機能パイプラインには描画する側のアルファ値が一定以下だったら描画しないようにする
「アルファテスト」という機能があります( 比較処理は幾つもあり、一定以上だったら描画しない、一定値以外だったら描画しない等あります )
この機能を使えばトムさんの望まれる処理が実現できそうです
よろしければこちらのバージョンをダウンロードしてください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
以下の関数を追加しました
// 描画時のアルファテストの設定を行う
// TestMode:比較モード
// -1 // デフォルト処理に戻す
// DX_CMP_NEVER // 常に偽( 必ず描画しない )
// DX_CMP_LESS // DrawAlpha < TestParam
// DX_CMP_EQUAL // DrawAlpha == TestParam
// DX_CMP_LESSEQUAL // DrawAlpha <= TestParam
// DX_CMP_GREATER // DrawAlpha > TestParam
// DX_CMP_NOTEQUAL // DrawAlpha != TestParam
// DX_CMP_GREATEREQUAL // DrawAlpha >= TestParam
// DX_CMP_ALWAYS // 常に真( 必ず描画する )
// TestParam:描画アルファ値との比較に使用する値
int SetDrawAlphaTest( int TestMode, int TestParam ) ;
アルファ値が 255 の部分だけ描画したいということでしたら描画の前に
SetDrawAlphaTest( DX_CMP_GREATER, 128 ) ;
と、描画のアルファ値が 128 以上のときのみ描画するように設定をしてから描画すると
トムさんのご希望の通りの動作になると思います( 一応 128 ではなく 0 でも大丈夫ですが
SetDrawMode( DX_DRAWMODE_BILINEAR ) でバイリニア補間を行っている場合は補間部分の
アルファ値が 0 以上になるので、その部分が描画されます )
因みにアルファテストの機能はDXライブラリ内部でも透過色の処理などで使用していますので
特別にアルファテストの機能を使わなくても良くなったら
SetDrawAlphaTest( -1, 0 ) ;
を実行してデフォルトの動作に戻してください
|
Re: ポリゴンのα=0(抜き)のZ値について ( No.3 ) |
- 名前:トム 日時:2011/04/02 11:44
管理人さん、関数の追加どうもありがとうございます。
SetDrawAlphaTest関数は、問題なく動作している事を確認しました。
1点気になる事があります。
デフォルト状態での動作が、以前と異なっています。
何もしなくてもこちらの意図通り動作しています。
|
Re: ポリゴンのα=0(抜き)のZ値について ( No.4 ) |
- 名前:管理人 日時:2011/04/11 01:06
ご報告ありがとうございます
SetDrawAlphaTest の機能を追加した際に3Dモデルの描画機能内での
アルファテスト設定処理との関係で、少し処理を変えざるをえなかったので
最終的に3Dモデルを描画する際は描画アルファ値が8以下の場合は描画しないようにしました
・・・のですが、改めて見直してみたところ処理を変えなくても済むことが判明したので
以前と同じようにアルファ値が0でもレンダリングされるようにしました orz
トムさんは必要無いと思いますが、一応こちらにアップしたことをお知らせ致します
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCCTest.exe // Gnu C++ 用
|
Re: ポリゴンのα=0(抜き)のZ値について ( No.5 ) |
- 名前:トム(解決) 日時:2011/04/14 17:32
管理人さん、対応どうもありがとうございます。
これで、抜きのテクスチャーに対してのZソートの必要がなくなりました。
と同時に、抜きのテクスチャーがはられたポリゴンがクロスしても問題なく描画されるようになりました。
解決とします。
|