Graphics Reference
In-Depth Information
SAFE_RELEASE(g_pMeshEnhanced);
g_pMeshEnhanced = pMeshTemp;
g_dwNumSegs = dwNewNumSegs;
return S_OK;
}
HRESULT LoadEffect(IDirect3DDevice9* pd3dDevice, LPCWSTR effect)
{
HRESULT hr;
SAFE_RELEASE(g_pEffect);
//Read the D3DX effect file
WCHAR str[MAX_PATH];
V_RETURN(DXUTFindDXSDKMediaFileCch(str, MAX_PATH, effect));
//If this fails, there should be debug output as to
//they the.fx file failed to compile
V_RETURN(D3DXCreateEffectFromFile(pd3dDevice, str, NULL, NULL,
g_DwShaderFlags, NULL, &g_pEffect, NULL));
return S_OK;
}
HRESULT LoadMesh(IDirect3DDevice9* pd3dDevice, DWORD meshIndex)
{
HRESULT hr;
WCHAR wszMeshDir[MAX_PATH];
WCHAR wszWorkingDir[MAX_PATH];
IDirect3DVertexBuffer9* pVB = NULL;
for(UINT i = 0; i < g_dwNumMaterials; i++)
SAFE_RELEASE(g_ppTextures[i]);
SAFE_DELETE_ARRAY(g_ppTextures);
SAFE_RELEASE(g_pMeshSysMem);
SAFE_RELEASE(g_pbufMaterials);
SAFE_RELEASE(g_pbufAdjacency);
SAFE_RELEASE(g_pMeshEnhanced);
//Load the mesh
V_RETURN(DXUTFindDXSDKMediaFileCch(wszMeshDir, MAX_PATH,
g_Models[meshIndex]));
V_RETURN(D3DXLoadMeshFromX(wszMeshDir, D3DXMESH_SYSTEMMEM,
pd3dDevice, &g_pbufAdjacency, &g_pbufMaterials, NULL,
&g_dwNumMaterials, &g_pMeshSysMem));
g_OriginalNumFaces = g_pMeshSysMem->GetNumFaces();
//Initialize the mesh directory string
WCHAR* pwszLastBSlash = wcsrchr(wszMeshDir, L'\\');
if(pwszLastBSlash)
*pwszLastBSlash = L'\0';
else
StringCchCopyW(wszMeshDir, MAX_PATH, Lā€.ā€);
//Lock the vertex buffer, to generate a simple bounding sphere
hr = g_pMeshSysMem->GetVertexBuffer(&pVB);
if(FAILED(hr))
return hr;
Search WWH ::




Custom Search