方法:ファイルからのテクスチャーの初期化

D3DX ユーティリティ ライブラリのヘルパー関数を使用して、ファイルからテクスチャーを初期化します。テクスチャーをロードするには、テクスチャーとテクスチャー ビューを作成する必要があります。ここでは、テクスチャーとビューを別々に作成する方法と同時に作成する方法について説明します。

ファイルからテクスチャーを初期化するには

  • D3DX11CreateShaderResourceViewFromFile を呼び出して、テクスチャーのパスを指定することで、テクスチャー リソース インターフェイスとリソース ビューを初期化します。テクスチャーのロード方法を指定する D3DX11_IMAGE_LOAD_INFO 構造体に値を指定することもできます。指定しないと、Direct3D によって既定のパラメーターが選択されます。

D3DX11CreateShaderResourceViewFromFile 関数は、リソースとビューの両方をカプセル化する ID3D11ShaderResourceView オブジェクトを初期化します。ID3D11View::GetResource を呼び出して、テクスチャーへのポインターを取得できます。

次のコード例は、D3DX11CreateShaderResourceViewFromFile を使用して、シェーダー リソースとシェーダー ビューを同時に作成する方法を示しています。この例では、pDevice 変数が初期化済みの ID3D11Device オブジェクトであることを前提としています。

 D3DX11_IMAGE_LOAD_INFO loadInfo; ZeroMemory( &loadInfo, sizeof(D3DX11_IMAGE_LOAD_INFO) ); loadInfo.BindFlags = D3D11_BIND_SHADER_RESOURCE; loadInfo.Format = DXGI_FORMAT_BC1_UNORM;  ID3D11ShaderResourceView *pSRView = NULL; D3DX11CreateShaderResourceViewFromFile( pDevice, L"sample.bmp", &loadInfo, NULL, &pSRView, NULL ); 

テクスチャーとビューを別々に初期化するには

  1. D3DX11CreateTextureFromFile 関数を呼び出して、テクスチャーへのパスを指定することで、テクスチャー リソース インターフェイスを初期化します。たとえば、2D テクスチャーを初期化するには、ID3D11Texture2D インターフェイス ポインターのアドレスを渡します。

    必要に応じて、テクスチャーのロード方法を指定する D3DX11_IMAGE_LOAD_INFO 構造体に値を指定することもできます。ロード パラメーターを指定しないと、 Direct3D によって最適なパラメーターが自動的に指定されます。

  2. ID3D11Device::CreateShaderResourceView を呼び出して、シェーダー リソース ビュー オブジェクトを初期化します。既定のパラメーターによるビューを取得するには、シェーダー リソース ビューの記述として NULL を渡し、既定以外のパラメーターによるビューを取得するには、シェーダー リソース ビューの記述として NULL 以外を渡します。必要に応じ、ID3D11Resource::GetType を呼び出してテクスチャーの種類を指定し、ID3D11ShaderResourceView::GetDesc を呼び出してテクスチャー フォーマットを指定します。

次のコード例は、ID3D11Texture2D オブジェクトで表現される 2D テクスチャーおよび ID3D11ShaderResourceView オブジェクトで表現されるシェーダー リソース ビューを別々に作成する方法を示しています。この例では、pDevice 変数が初期化済みの ID3D11Device オブジェクトであることを前提としています。

 ID3D11Texture2D * pTexture = NULL; ID3D11ShaderResourceView *pSRView = NULL; D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; D3D11_TEXTURE2D_DESC desc;  // Load the texture and initialize an ID3D11Texture2D object. D3DX11CreateTextureFromFile( pDevice, L"sample.bmp", NULL, NULL, &pTexture, NULL );  // Get a texture description to determine the texture // format of the loaded texture. pTexture2D->GetDesc( &desc );  // Fill in the D3D11_SHADER_RESOURCE_VIEW_DESC structure. srvDesc.Format = desc.Format; srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; srvDesc.Texture2D.MostDetailedMip = 0; srvDesc.Texture2D.MostDetailedMip = desc.MipLevels;  // Create the shader resource view. pDevice->CreateShaderResourceView( pTexture, &srvDesc, &pSRView ); 

関連項目

テクスチャー