Platform SDK: DirectX

ステップ 1.1 : テクスチャ座標を設定する

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「Direct3D 直接モード Visual Basic チュートリアル」を参照すること。

[C++]

Direct3D では、テクスチャは 2 次元配列のカラー値として表される。配列内の各要素は、テクセルとして参照される。テクセルは、それぞれ U および V とラベル付けされた列および行で識別できる。

アプリケーションでは、頂点のテクスチャ座標を記述する値で D3DVERTEX 構造体を初期化して、テクスチャ座標を頂点に直接割り当てる。次は Texture アプリケーションのコードの一部である。このコードでは、立方体の前面を記述する 4 つの頂点を作成している。

    *pVertices++ = D3DVERTEX( D3DVECTOR(-1.0f, 1.0f,-1.0f), n0, 0.0f, 0.0f );
    *pVertices++ = D3DVERTEX( D3DVECTOR( 1.0f, 1.0f,-1.0f), n0, 1.0f, 0.0f );
    *pVertices++ = D3DVERTEX( D3DVECTOR(-1.0f,-1.0f,-1.0f), n0, 0.0f, 1.0f );
    *pVertices++ = D3DVERTEX( D3DVECTOR( 1.0f,-1.0f,-1.0f), n0, 1.0f, 1.0f );

D3DVERTEX の割り当てを行うときは、第 1 引数で頂点を定義し、第 2 引数で頂点の法線ベクトル (法線の定義については、SDK 付属の Texture アプリケーションのコードを参照) の方向を定義し、次の 2 つの引数で頂点のテクスチャ座標を表す。この例では、アプリケーションで立方体の前面にビットマップ テクスチャ全体をマップするので、テクスチャ座標は (0, 0)、(1, 0)、(0, 1)、(1, 1) になる。

テクスチャ座標の詳細については、「テクスチャ座標」を参照すること。

これまで立方体の背面、上面、底面、右側面、および左側面に定義したときと同じ方法を用いる必要がある。この方法については、SDK 付属の Texture アプリケーションのコードを参照すること。

Texture アプリケーションは、テクスチャ サーフェス オブジェクトとして IDirectDrawSurface7 オブジェクトを返すプログラマ定義関数 CreateTexture を実装している。

    g_pddsTexture1 = CreateTexture( pd3dDevice, "tree1.bmp" );
    g_pddsTexture2 = CreateTexture( pd3dDevice, "tex1.bmp" );
    g_pddsTexture3 = CreateTexture( pd3dDevice, "earth.bmp" );

上記のコードでは、ファイルベースのビットマップ "tree1.bmp"、"tex1.bmp"、および "earth.bmp" から 3 つのテクスチャ サーフェス オブジェクトを作成している。それぞれの関数呼び出しにおいて、第 1 引数 pd3dDevice はアプリケーションのレンダリング デバイスへの参照である。返されるテクスチャ サーフェス オブジェクト (g_pddsTexture1g_pddsTexture2、および g_pddsTexture3) は、レンダリング中に立方体プリミティブに設定される。

プログラマ定義関数 CreateTexture を詳細に調べて、テクスチャ サーフェス オブジェクトの準備方法および作成方法を確認できる。このタスクの最初のステップについては、「ステップ 1.2 : テクスチャ サーフェスを準備する」で説明する。