Microsoft DirectX 8.0 (C++) |
レンダリングを行う前に、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 : シーンのレンダリング」で説明する。