two Texture

二種類の Texture を貼り付けます。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの説明

  1. 自動生成した立方体に、二種類のテクスチャを貼り付けます。
    Basic Loader を使うと JPEG や GIF などの Texture を簡単にロードすることが出来ます。
    Basic Loader を参照してプロジェクトを作成して下さい。
  2. テクスチャを貼り付ける立方体は CreateCube() で生成します。
        // モデルの生成
        BasicShapes^ shapes = ref new BasicShapes(m_d3dDevice.Get());
    
        shapes->CreateCube(&m_vertexBuffer, &m_indexBuffer, nullptr, &m_indexCount);
    
  3. テクスチャは BasicLoader でロードします。
    L"ayu.jpg" が一枚目で、L"star.jpg" が二枚目のテクスチャです。
        // テクスチャのロード
        loader->LoadTexture(L"ayu.jpg", nullptr, &m_textureView1);
        loader->LoadTexture(L"star.jpg", nullptr, &m_textureView2);
    
  4. 二種類のテクスチャを切り替えて描画するコードです。
    DrawIndexed(m_indexCount/2, 0, 0); で立方体の3面に一枚目のテクスチャを貼り付けます。
    m_indexCount/2 が描画するポリゴンの Index 数です。
    次に二枚目のテクスチャに切り替えます。
    DrawIndexed(m_indexCount/2, m_indexCount/2, 0); で残りの3面を描画します。
    二枚目の開始位置は、残り半分(m_indexCount/2)の位置に設定します。
    3面が、どのように分けられるかは、自動生成した立方体の Index 順になります。
    これを入れ替えれば、好きなように面を分けることも出来ます。
        m_d3dContext->PSSetShaderResources(0, 1, m_textureView1.GetAddressOf());
        m_d3dContext->PSSetSamplers(0, 1, m_sampler.GetAddressOf());
        m_d3dContext->DrawIndexed(m_indexCount/2, 0, 0);
    
        m_d3dContext->PSSetShaderResources(0, 1, m_textureView2.GetAddressOf());
        m_d3dContext->DrawIndexed(m_indexCount/2, m_indexCount/2, 0);
    
  5. Basic Loader のときの描画方法を参考として掲載します。
    今回のソースと比べてみて下さい。
    この理屈が解れば、三枚以上のテクスチャを貼り付けることも、ポリゴンの一部だけを描画することも簡単です。
        m_d3dContext->PSSetShaderResources(0, 1, m_textureView.GetAddressOf());
        m_d3dContext->PSSetSamplers(0, 1, m_sampler.GetAddressOf());
        m_d3dContext->DrawIndexed(m_indexCount, 0, 0);
    

超初心者のプログラム入門(DirectX Store)