Microsoft DirectX 8.0 (C++)

ステップ 2 : 画面のジオメトリの初期化

レンダリングを行う前に、Texture サンプル プロジェクトでは、テクスチャを作成し、円柱のジオメトリを初期化するアプリケーション定義関数 InitGeometry を呼び出している。

テクスチャはファイル ベースのイメージから作成される。次のサンプル コードでは、D3DXCreateTextureFromFile を使って、Banana.bmp から円柱のサーフェスを覆うためのテクスチャを作成している。

if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, "Banana.bmp",
                                       &g_pTexture ) ) )
    return E_FAIL;

D3DXCreateTextureFromFile が受け取る最初のパラメータは、テクスチャをレンダリングするために使用される Microsoft® Direct3D® デバイスへのポインタである。2 番目のパラメータは、作成するテクスチャの元のファイル名を指定する ANSI 文字列へのポインタである。このサンプルでは、Banana.bmp を指定して、このファイルからイメージをロードする。3 番目のパラメータは、テクスチャ オブジェクトへのポインタのアドレスである。

バナナのテクスチャがロードされ、使用する準備ができたら、次のステップは円柱を作成することである。次のサンプル コードでは、頂点バッファに円柱のデータを設定している。各ポイントはテクスチャ座標 (tu, tv) を持つことに注意すること。

for( DWORD i=0; i<50; i++ )
{
    FLOAT theta = (2*D3DX_PI*i)/(50-1);

    pVertices[2*i+0].position = D3DXVECTOR3( sinf(theta),-1.0, cosf(theta) );
    pVertices[2*i+0].color    = 0xffffffff;
    pVertices[2*i+0].tu       = ((FLOAT)i)/(50-1);
    pVertices[2*i+0].tv       = 1.0f;

    pVertices[2*i+1].position = D3DXVECTOR3( sinf(theta), 1.0, cosf(theta) );
    pVertices[2*i+1].color    = 0xff808080;
    pVertices[2*i+1].tu       = ((FLOAT)i)/(50-1);
    pVertices[2*i+1].tv       = 0.0f;
}

各頂点には、位置座標、色、およびテクスチャ座標が含まれる。上記のサンプル コードでは、テクスチャが円柱の周囲をなめらかに覆うように、各ポイントのテクスチャ座標を設定している。

テクスチャがロードされ、頂点バッファをレンダリングする準備ができたので、次はディスプレイをレンダリングする。これについては、「ステップ 3 : シーンのレンダリング」で説明する。