two Texture

Win10 two Texture

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

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

プロジェクトの説明

  1. Win10 BasicShapes をベースに二種類の Texture を貼り付けます。
    DirectX 11 アプリ(ユニバーサル Windows) のプロジェクトの準備をして下さい。
    プロジェクトに Texture に貼り付ける画像を格納します。
    ayu.jpg と star.jpg の画像をプロジェクトに取り込んで下さい。
    Texture 画像は適当なもので構いません。
  2. m_textureSRV に代えて m_textureSRV1, m_textureSRV2 を定義します。
            //Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_textureSRV;
            Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_textureSRV1;
            Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_textureSRV2;
    
  3. テクスチャをロードします。
        //loader->LoadTexture(L"earth.jpg", nullptr, &m_textureSRV);
        loader->LoadTexture(L"ayu.jpg", nullptr, &m_textureSRV1);
        loader->LoadTexture(L"star.jpg", nullptr, &m_textureSRV2);
    
  4. CreateSphere(球)を CreateCube(立方体)に変更します。
        BasicShapes^ shapes = ref new BasicShapes(m_deviceResources->GetD3DDevice());
        //shapes->CreateSphere(
        //    &m_vertexBuffer, &m_indexBuffer, nullptr, &m_indexCount);
        shapes->CreateCube(
            &m_vertexBuffer, &m_indexBuffer, nullptr, &m_indexCount);
    
  5. 二種類のテクスチャで描画するコードです。
    【旧】修正前のソース
        context->PSSetShaderResources(0, 1, m_textureSRV.GetAddressOf());
        context->PSSetSamplers(0, 1, m_sampler.GetAddressOf());
    
        // オブジェクトを描画します。
        context->DrawIndexed(m_indexCount, 0, 0);
    
    【新】修正後のソース
        context->PSSetSamplers(0, 1, m_sampler.GetAddressOf());
        context->PSSetShaderResources(0, 1, m_textureSRV1.GetAddressOf());
        context->DrawIndexed(m_indexCount/2, 0, 0);
    
        context->PSSetShaderResources(0, 1, m_textureSRV2.GetAddressOf());
        context->DrawIndexed(m_indexCount/2, m_indexCount/2, 0);
    
  6. DrawIndexed() で頂点データの Index を指定してポリゴンを描画します。
    修正前は m_textureSRV 一枚のテクスチャを貼り付けています。
    context->DrawIndexed(m_indexCount, 0, 0); の m_indexCount が描画するポリゴンです。
    修正後は m_textureSRV1 のテクスチャで先頭(0)から m_indexCount/2 個を描画します。
    次に m_textureSRV2 のテクスチャで m_indexCount/2 から m_indexCount/2 個を描画します。
    3面がどのように分けられるかは、自動生成した立方体の Index 順になります。
    この理屈が解れば、三枚以上のテクスチャを貼り付けることも、ポリゴンの一部だけを描画することも簡単です。

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