【C#版DXライブラリ】3Dモデルのポリゴン情報を取得する方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
PCJ-600
記事: 6
登録日時: 9年前

【C#版DXライブラリ】3Dモデルのポリゴン情報を取得する方法

#1

投稿記事 by PCJ-600 » 8年前

現在C#版DXライブラリを使っているのですが、
C++版に存在する
MV1GetReferenceMesh()などの、MV1LoadModel()で読み込んだ3Dモデルのポリゴン情報を取得できる「参照用メッシュ関数」がC#版には存在しないようです。
C#版にはこれに代わる関数は用意されていないのでしょうか?
なければどのようにしてMV1LoadModel()で読み込んだ3Dモデルのポリゴン情報を得れば良いでしょうか?
それも無理なら、ファイルから直接読み込むしかないのでしょうか?

Math

Re: 【C#版DXライブラリ】3Dモデルのポリゴン情報を取得する方法

#2

投稿記事 by Math » 8年前

こんばんはPCJ-600さん。Bulletの時の方ですね。ここhttp://csi.nisinippon.com/index.htmlがC#に関する私のホームページの1つです。(Niftyさんは最低でも50個のアドレスをくれるのでいろいろC#関連もあります。^^;)
C#の最新のDxLib(Ver3.17a)には次の様に書いてあります
----------------------------
概要
 DXライブラリを VisualC# で使うための DLL
 ( 一応C#以外で使用する場合の為に DxDLL.h を同梱してあります、DxDLL.dll の中に含まれている
  関数の一覧が載っています )

使い方

 <準備>
   DxLibDotNet.dll を使用する場合

    1.C# のプロジェクトのフォルダの、実行ファイルが作成されるフォルダ
      (通常は 「プロジェクトのフォルダ\bin\Debug」 か 「プロジェクトのフォルダ\bin\Release」)
      に DxLib.dll と DxLibDotNet.dll をコピー

    2.C# のプロジェクトを開いて
      「プロジェクト」→「参照の追加」→「参照タブ」で、1でコピーした DxLibDotNet.dll を選択して「OK」ボタン。


   DxDLL.cs を使用する場合

    1.C# のプロジェクトのフォルダの、実行ファイルが作成されるフォルダ
      (通常は 「プロジェクトのフォルダ\bin\Debug」 か 「プロジェクトのフォルダ\bin\Release」)
      に DxLib.dll をコピー

    2.C# のプロジェクトを開いて
      「プロジェクト」→「既存項目の追加」で、DxDLL.cs を「追加」。



 <プログラムで実際に使う>
   DXライブラリを使用するソースに using DxLibDLL; を書く。
   後は、基本的にC言語版のDXライブラリの関数名やマクロ定義の前に DX. を付けたものとなります。
   (DX_BLENDMODE_ALPHA 等も DX が2回続いて変ですが、DX.DX_BLENDMODE_ALPHA となります)

  例:
     int GrHandle = DX.LoadGraph( "test1.bmp" );
     DX.SetDrawBlendMode( DX.DX_BLENDMODE_ALPHA, 128 );
     DX.DrawGraph( 0, 0, GrHandle, DX.TRUE );


   LoadDivGraph 等の int 型のポインタを渡すものは、out int HandleBuf のように定義されています。
   というか、文字列以外のポインタは全て out で渡すようになっています。

  例:
     int[] Handle = new int[25];
     DX.LoadDivGraph( "test2.bmp", 25, 5, 5, 10, 10, out Handle[0] );

   上記以外の文法上の違いはありませんので、基本的にはC言語版のDXライブラリのリファレンスを
   ご参照ください。



 <使えない関数>
   基本的に「可変引数の関数」「void 型のポインタを引数で取る関数」「コールバック関数を
   引数で取る関数」が使えません。(なので通信機能は使えません・・・)
   また、ポインタを返す関数やポインタが含まれている構造体を扱う関数も使えませんので、
   非公開関数はかなりの数が使えなくなっています。

   (公開関数で使用できないもの)
   モデルを扱う関数の一部
   DrawFormatString
   GetDrawFormatStringWidth
   DrawFormatStringToHandle
   GetDrawFormatStringWidthToHandle
   SetDataToMask
   DrawMaskToDirectData
   DrawFillMaskToDirectData
   printfDx
   NetWorkSend
   NetWorkRecv
   NetWorkRecvToPeek
   CreateGraphFromMem
   LoadSoundMemByMemImage
   GraphLock
   GraphUnLock

   <余談>
    上記「使用できない関数」の内、プロジェクトの「条件付コンパイルシンボル」に「DX_USE_UNSAFE」を
    定義して、且つ「アンセーフコードの許可」を有効にすると幾つか使える関数が増えます。
    ご興味がありましたら DxDLL.cs の中を「unsafe」や「DX_USE_UNSAFE」で検索してみてください。

Math

Re: 【C#版DXライブラリ】3Dモデルのポリゴン情報を取得する方法

#3

投稿記事 by Math » 8年前

ここできくより、本家”DXライブラリ置き場掲示板”で聞かれたら、一発でわかりますよ!

閉鎖

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