Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Assimp导入obj文件_C++_Directx_Directx 11_Assimp - Fatal编程技术网

C++ 使用Assimp导入obj文件

C++ 使用Assimp导入obj文件,c++,directx,directx-11,assimp,C++,Directx,Directx 11,Assimp,我在网上寻找一些ASIMP样品,但没有成功 我有以下结构: struct VertexTextureNormal { XMFLOAT3 Position; XMFLOAT2 TexCoord; XMFLOAT3 Normal; }; 任何人都可以发布填充顶点和索引数组的实际代码吗; DWORD nIndices; DWORD *pIndices; if (pAIMesh->HasFaces()) {

我在网上寻找一些ASIMP样品,但没有成功

我有以下结构:

struct VertexTextureNormal
{
    XMFLOAT3 Position;
    XMFLOAT2 TexCoord;
    XMFLOAT3 Normal;
};
任何人都可以发布填充顶点和索引数组的实际代码吗;
        DWORD nIndices;
        DWORD *pIndices;

        if (pAIMesh->HasFaces())
        {
            aiFace *pAIFaces;

            pAIFaces = pAIMesh->mFaces;
            nIndices = pAIMesh->mNumFaces * 3;

            pIndices = new DWORD[nIndices];

            for (DWORD i = 0; i < pAIMesh->mNumFaces; i++)
            {
                if (pAIFaces[i].mNumIndices != 3)
                {
                    aiReleaseImport(pScene);
                    delete[] pIndices;
                    return E_FAIL;
                }

                for (DWORD j = 0; j < 3; j++)
                {
                    pIndices[i * 3 + j] = pAIFaces[i].mIndices[j];
                }
            }
        }

        if (pAIMesh->HasPositions())
        {
            DWORD nVertices;
            CVertex *pVertices;

            nVertices = pAIMesh->mNumVertices;

            pVertices = new CVertex[nVertices];

            for (DWORD i = 0; i < nVertices; i++)
            {
                pVertices[i].vPos = XMFLOAT3(pAIMesh->mVertices[i].x, pAIMesh->mVertices[i].y, pAIMesh->mVertices[i].z);

                XMStoreFloat3(&pVertices[i].vPos, XMVector3TransformCoord(XMLoadFloat3(&pVertices[i].vPos), mLocalWorld));
            }

            if (pAIMesh->HasNormals())
            {
                for (DWORD i = 0; i < nVertices; i++)
                {
                    XMVECTOR xvNormal = XMLoadFloat3((XMFLOAT3 *)&pAIMesh->mNormals[i]);

                    xvNormal = XMVector3Normalize(xvNormal);

                    XMStoreFloat3(&pVertices[i].vNormal, xvNormal);
                }
            }

            if (pAIMesh->HasTextureCoords(0))
            {
                for (DWORD i = 0; i < nVertices; i++)
                {
                    pVertices[i].vTexCoords = XMFLOAT2(pAIMesh->mTextureCoords[0][i].x, pAIMesh->mTextureCoords[0][i].y);
                }
            }

            pMesh->m_pVertices = pVertices;
            pMesh->m_dwNumVertices = nVertices;
        }
德沃德*品脱; 如果(pAIMesh->HasFaces()) { aiFace*pAIFaces; pAIFaces=pAIMesh->mFaces; nIndices=pAIMesh->mNumFaces*3; pIndices=新的DWORD[nIndices]; 对于(DWORD i=0;imNumFaces;i++) { if(pAIFaces[i].mNumIndices!=3) { aiReleaseImport(pScene); 删除[]个小方块; 返回E_失败; } 对于(DWORD j=0;j<3;j++) { pIndices[i*3+j]=pAIFaces[i]。mIndices[j]; } } } 如果(pAIMesh->HasPositions()) { 德沃德公司; CVertex*pVertices; nVertices=pAIMesh->mNumVertices; pVertices=新的CVertex[n证书]; for(DWORD i=0;imVertices[i].x,pAIMesh->mVertices[i].y,pAIMesh->mVertices[i].z); XMStoreFloat3(&pVertices[i].vPos、xmvector3transferormcoord(XMLoadFloat3(&pVertices[i].vPos)、mLocalWorld); } 如果(pAIMesh->HasNormals()) { for(DWORD i=0;imNormals[i]); xvNormal=XMVector3Normalize(xvNormal); XMStoreFloat3(&pVertices[i].vNormal,xvNormal); } } if(pAIMesh->hastexturecords(0)) { for(DWORD i=0;imTextureCoords[0][i].x,pAIMesh->mTextureCoords[0][i].y); } } pMesh->m_pVertices=pVertices; pMesh->m_dwNumVertices=n证书; }