1. XファイルとはMicrosoft社のDirectXで使用されているポリゴンデータです。
今回はds+のAPIを用いてXファイルからポリゴンデータを読み込んでみましょう。
2. 「ds+」をインストールしましょう。まだ、という方はこちらのページへ。
3. ソリューションファイルを開き、プロジェクトファイル(test03)をスタートアッププロジェクトに設定してください。 |
 |
4. さて、Xファイルを読み込むにはdsLoadMeshFromX関数を使います。 |
| dsTriMesh dsLoadMeshFromX ( const char * FileName ); |
引数はファイル名(***.x)です。
戻り値の「dsTriMesh」というのは,
|
typedef struct _DS_TRIMESH {
float *Vertices;
int VertexCount;
int *Indices;
int IndexCount;
} *dsTriMesh;
|
と定義された関数ポインタです。
この関数は引数で指定されたXファイルから、頂点数や座標、三角メッシュ数を読み込んで、
dsTriMesh構造体のVertices、Indicesなどにそれぞれの値を格納します。 |
5. まずは三角メッシュを作るところで、
|
TriData = dGeomTriMeshDataCreate();
mesh = dsLoadMeshFromX("cone.x"); // Load mesh data from "cone.x"
dGeomTriMeshDataBuildSingle(TriData, mesh->Vertices, 3 * sizeof(float),
mesh->VertexCount, mesh->Indices, mesh->IndexCount, 3 * sizeof(int)); |
という文を追加して、meshにどのポリゴンデータを取り込むのかを教えます。
|
6. 次に描画する時にはdsDrawTriMesh関数を使います。 |
| void dsDrawTriMesh ( const float pos[3], const float R[12], dsTriMesh trimesh
); |
7. プログラムの終了時には、dsTriMeshDestroy関数を使って確保したメモリを解放します。 |
| void dsTriMeshDestroy ( dsTriMesh TriMesh ); |
8. ビルド(B)→デバッグ開始(F5)とクリックして、プログラムを実行してみましょう。
|

|
このように、読み込んだポリゴンが表示されるはずです。
ポリゴンモデルはMetasequoia等のソフトで作ることが出来ます。
他にもいろいろ試してみるのも良いでしょう。
ちなみにdLoadMeshFromX関数は三角形メッシュにしか対応していません。
四角形メッシュを読み込みたい場合は三角形に変形するか、XReaderを使うと良いでしょう。
|