DirectX 10에서 메쉬를로드 할 수 있었지만 이제 다른 메쉬를로드하려고 시도하지만 새 메쉬를 추가 할 때마다 원래 메쉬가 사라집니다. 어떻게 동시에 두 개의 메시를 표시 할 수 있습니까?DirectX 10에서 다른 메쉬를로드하는 방법
const D3D10_INPUT_ELEMENT_DESC layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },
{ "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D10_INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24, D3D10_INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = sizeof(layout)/sizeof(layout[0]);
// Create the input layout
D3D10_PASS_DESC PassDesc;
g_pTechnique->GetPassByIndex(0)->GetDesc(&PassDesc);
V_RETURN(pd3dDevice->CreateInputLayout(layout, numElements, PassDesc.pIAInputSignature,
PassDesc.IAInputSignatureSize, &g_pVertexLayout));
// Set the input layout
pd3dDevice->IASetInputLayout(g_pVertexLayout);
// Load the mesh
V_RETURN(g_Mesh.Create(pd3dDevice, L"Tiger\\tiger.sdkmesh", true));
V_RETURN(g_Mesh.Create(pd3dDevice, L"Wing\\wing.sdkmesh", true));
// Initialize the world matrices
D3DXMatrixIdentity(&g_World);
메시 렌더링 :
//
// Render the mesh
//
UINT Strides[1];
UINT Offsets[1];
ID3D10Buffer* pVB[1];
pVB[0] = g_Mesh.GetVB10(0, 0);
Strides[0] = (UINT)g_Mesh.GetVertexStride(0, 0);
Offsets[0] = 0;
pd3dDevice->IASetVertexBuffers(0, 1, pVB, Strides, Offsets);
pd3dDevice->IASetIndexBuffer(g_Mesh.GetIB10(0), g_Mesh.GetIBFormat10(0), 0);
D3D10_TECHNIQUE_DESC techDesc;
g_pTechnique->GetDesc(&techDesc);
SDKMESH_SUBSET* pSubset = NULL;
ID3D10ShaderResourceView* pDiffuseRV = NULL;
D3D10_PRIMITIVE_TOPOLOGY PrimType;
for(UINT p = 0; p < techDesc.Passes; ++p)
{
for(UINT subset = 0; subset < g_Mesh.GetNumSubsets(0); ++subset)
{
pSubset = g_Mesh.GetSubset(0, subset);
PrimType = g_Mesh.GetPrimitiveType10((SDKMESH_PRIMITIVE_TYPE)pSubset->PrimitiveType);
pd3dDevice->IASetPrimitiveTopology(PrimType);
pDiffuseRV = g_Mesh.GetMaterial(pSubset->MaterialID)->pDiffuseRV10;
g_ptxDiffuseVariable->SetResource(pDiffuseRV);
g_pTechnique->GetPassByIndex(p)->Apply(0);
pd3dDevice->DrawIndexed((UINT)pSubset->IndexCount, 0, (UINT)pSubset->VertexStart);
}
}
g_Mesh의 다른 인스턴스를 만드는 방법을 알아낼 수 없습니다. 메쉬를 렌더링 할 때 완료됩니까? 내 렌더링 메쉬 코드를 내 질문에 추가했습니다. –
"g_Mesh"선언은 어디에 있습니까? ''g_Mesh2''를 만들거나''g_Mesh [2]''배열로 만들 수 없습니까? –
g_Mesh2 만들기, 도와 주셔서 감사합니다 :-) –