Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dev"></param>
        /// <param name="pass"></param>
        /// <returns></returns>
        public int CreateInputLayout(Device dev, EffectPass pass)
        {
            int hr;

            D3D11_INPUT_ELEMENT_DESC_EX[] aDecl = new D3D11_INPUT_ELEMENT_DESC_EX[15];
            MCDeclElementVertexBuffer     tmpSP = new MCDeclElementVertexBuffer();
            int nSt = 0, nOffset, nCpyNum = 0;

            nOffset = 0;

            // 頂点
            if (m_meshGroup.meshGeometry != null)
            {
                tmpSP   = m_meshGroup.meshGeometry.GetDeclElementVertexBuffer();
                nCpyNum = tmpSP.GetInputElementDesc(aDecl, nSt, nOffset);
                if (nCpyNum != 0)
                {
                    ++nSt;
                    nOffset += nCpyNum;
                }
            }
            // テクスチャ
            if (m_meshGroup.meshTexture != null)
            {
                tmpSP   = m_meshGroup.meshTexture.GetDeclElementVertexBuffer();
                nCpyNum = tmpSP.GetInputElementDesc(aDecl, nSt, nOffset);
                if (nCpyNum != 0)
                {
                    ++nSt;
                    nOffset += nCpyNum;
                }
            }
            // スキンメッシュ
            if (m_meshGroup.meshVBlendBone != null)
            {
                tmpSP   = m_meshGroup.meshVBlendBone.GetDeclElementVertexBuffer();
                nCpyNum = tmpSP.GetInputElementDesc(aDecl, nSt, nOffset);
                if (nCpyNum != 0)
                {
                    ++nSt;
                    nOffset += nCpyNum;
                }
            }

            // 頂点宣言オブジェクト作成
            hr = App.LayoutMgr.GetLayoutID(aDecl, nCpyNum, out m_meshGroup.layoutID);
            return(hr);
        }