ExtendedMaterial 構造体

ExtendedMaterial 構造体

使用例

  • メッシュを基にしたテクスチャの作成
  • ファイルからのメッシュのロード

Microsoft® Direct3D® (.x) ファイルに保存されているマテリアル情報を返す。

定義

Visual Basic Public Structure ExtendedMaterial
C# public struct ExtendedMaterial
Managed C++ public __value struct ExtendedMaterial
JScript 構造体は使えるが、独自に定義することはできない。

メンバ テーブル

次のテーブルは、ExtendedMaterial オブジェクトによって公開されているメンバの一覧である。左側のタブをクリックし、表示したいメンバの種類を選ぶこと。

メソッド

メソッド 説明
ExtendedMaterial オブジェクトの新しいインスタンスを初期化する。
ToString このインスタンスの文字列表現を取得する。

プロパティ

プロパティ 説明
Material3D マテリアルのプロパティを記述する Material 構造体を取得または設定する。
TextureFilename テクスチャのファイル名を指定する文字列。

使用例

メッシュを基にしたテクスチャの作成

この例では、メッシュから作成されたテクスチャ オブジェクトに対し、ビットマップ化されたテクスチャ ファイルを適用する方法を示す。

アプリケーション定義の OnResetMeshDevice メソッドは次の内容を実行する。

  1. メッシュ要素は、Mesh.FromFile(String,MeshFlags,Device,ExtendedMaterial[]) を使ってファイルからロードする。
  2. ファイルのデータを ExtendedMaterial マテリアル バッファに格納する。
  3. テクスチャ名およびマテリアル プロパティは、Material3D を使ってマテリアル バッファから抽出する。
  4. ファイルから取得したテクスチャ値は、FromFile(Device,String) を使って各メッシュ要素に適用する。
using Microsoft.DirectX.Direct3D;

public class Meshes : System.Windows.Forms.Form
{
    // Global variables for this project
    Device device = null;              // Rendering device
    Mesh mesh = null;                  // Mesh object
    Direct3D.Material[] meshMaterials; // Materials structure for mesh
    Texture[] meshTextures;            // Textures structure for mesh

    public bool InitializeGraphics()   // Initialize the Direct3D object
    {
        .
        .
        .
        // Call method to reset mesh device
        device.DeviceReset += new System.EventHandler(this.OnResetMeshDevice);
        .
        .
        .
    }
    
    // Mesh device reset method
    public void OnResetMeshDevice(object sender, EventArgs e) 
    {
        ExtendedMaterial[] materials = null;
        Device dev = (Device)sender;
        
        // Set up the directory to load the proper data
        System.IO.Directory.SetCurrentDirectory(
                 System.Windows.Forms.Application.StartupPath +  @"\..\..\");
        
        // Load the mesh from the specified file
        mesh = Mesh.FromFile("tiger.x", MeshFlags.SystemMem,
                             device, out materials);

        // Extract texture names and material properties from material buffer
        meshTextures  = new Texture[materials.Length];
        meshMaterials = new Direct3D.Material[materials.Length];
        for( int i=0; i<materials.Length; i++ )
        {
            meshMaterials[i] = materials[i].Material3D;
            
            // Set the ambient color for the material
            meshMaterials[i].Ambient = meshMaterials[i].Diffuse;
            
            // Create the texture
            meshTextures[i] = TextureLoader.FromFile(dev,
                                            materials[i].TextureFilename);
        }
        .
        .
        .
    }
    
    static void Main()
    {
        Meshes frm = new Meshes();
        if (!frm.InitializeGraphics())
        {
            // Error handling
        }
        System.Windows.Forms.Application.Run(frm);
    }
}

ファイルからのメッシュのロード

この例は、マテリアル構造体を作成し、ファイルからメッシュをロードするコードである。

このコードは、最初に、Device と、ロードしたメッシュ データを収める ExtendedMaterial 構造体を作成する。

Mesh.FromFile(String,MeshFlags,Device,ExtendedMaterial[]) メソッドを使って、ローカル ファイルをロードする。MeshFlags 列挙の SystemMemory 定数は、頂点バッファおよびインデックス バッファのためにシステム メモリ (ページング可能な RAM 以外) を使うように指定する。

FromFile(String,MeshFlags,Device,ExtendedMaterial[]) は、ファイルからメッシュ データをロードするために使う、オーバーロードされた 8 つの FromFile メソッドの内の 1 つである。

using Microsoft.DirectX.Direct3D;

public class Meshes : Form
{
    // Global variables for this project
    Device device = null;   // Rendering device
    PresentParameters presentParams = new PresentParameters();
    .
    .
    .
    // Create the Device object
    device = new Device(0,
                        DeviceType.Hardware,
                        this,
                        CreateFlags.SoftwareVertexProcessing,
                        presentParams);
    ExtendedMaterial[] materials = null;

    // Load the mesh from the specified file
    mesh = Mesh.FromFile("tiger.x",
                        MeshFlags.SystemMemory,
                        device,
                        out materials);
    .
    .
    .
}

構造体の情報

名前空間 Microsoft.DirectX.Direct3D
アセンブリ Microsoft.DirectX.Direct3DX (microsoft.directx.direct3dx.dll)
厳密名 Microsoft.DirectX.Direct3DX,  Version=0293,  Culture=neutral,  PublicKeyToken=d3231b57b74a1492

参照

© 2002 Microsoft Corporation. All rights reserved. Terms of use.