プログラムを見直して思い出しました、輪郭線はpmd,pmxに含まれる頂点単位の
「輪郭線を表示するかどうか」のパラメータに応じて輪郭線を出さない箇所があり、
メインのメッシュとは別にポリゴン描画用の頂点インデックスを用意しているのでした
これを使用せずに頂点単位の輪郭線表示情報を反映するのは大変ですので、輪郭線用のメッシュだけ
描画する手段を用意しました、よろしければその機能を追加したこちらのバージョンをダウンロードしてください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
追加した関数は以下の関数です
// モデルのメッシュの種類( DX_MV1_MESHCATEGORY_NORMAL など )毎の表示、非表示を設定する
// int MHandle : モデルハンドル
// int MeshCategory : メッシュの種類
// int VisibleFlag : 表示するかどうか( TRUE:表示する FALSE:表示しない )
int MV1SetMeshCategoryVisible( int MHandle, int MeshCategory, int VisibleFlag ) ;
第二引数に渡せるメッシュの種類を表す値は以下の通りです
// メッシュの種類
#define DX_MV1_MESHCATEGORY_NORMAL (0) // 普通のメッシュ
#define DX_MV1_MESHCATEGORY_OUTLINE (1) // 輪郭線描画用メッシュ
#define DX_MV1_MESHCATEGORY_OUTLINE_ORIG_SHADER (2) // 輪郭線描画用メッシュ( オリジナルシェーダーでの描画用 )
この関数を使って例えば
MV1SetMeshCategoryVisible( ModelHandle, DX_MV1_MESHCATEGORY_NORMAL, FALSE ) ;
を実行すると、輪郭部分以外が描画されなくなります
あと、MV1SetUseOrigShader( TRUE ) ; を実行してオリジナルシェーダーを
使用する設定にしている場合はデフォルトでは輪郭線用メッシュは描画されませんが、この関数で
MV1SetMeshCategoryVisible( ModelHandle, DX_MV1_MESHCATEGORY_OUTLINE_ORIG_SHADER, TRUE ) ;
とすると、オリジナルシェーダーでの描画の際も輪郭線の描画が行われます
ともあれ、みょもさんのされたいことを実現する場合は、まず
MV1SetUseOrigShader( FALSE ) ;
MV1SetMeshCategoryVisible( ModelHandle, DX_MV1_MESHCATEGORY_NORMAL, FALSE ) ;
MV1SetMeshCategoryVisible( ModelHandle, DX_MV1_MESHCATEGORY_OUTLINE, TRUE ) ;
を実行して輪郭線だけ描画されるようにした状態でモデルを描画した後、
MV1SetUseOrigShader( TRUE ) ;
MV1SetMeshCategoryVisible( ModelHandle, DX_MV1_MESHCATEGORY_NORMAL, TRUE ) ;
MV1SetMeshCategoryVisible( ModelHandle, DX_MV1_MESHCATEGORY_OUTLINE_ORIG_SHADER, FALSE ) ;
を実行して今度は輪郭部分以外をオリジナルのシェーダーを使用して描画します
よろしければお試しください