Graphics Reference
In-Depth Information
V_RETURN(g_pMeshSysMem->CloneMeshFVF(g_pMeshSysMem->GetOptions(),
g_pMeshSysMem->GetFVF() | D3DFVF_NORMAL, pd3dDevice, &pTempMesh));
D3DXComputeNormals(pTempMesh, NULL);
SAFE_RELEASE(g_pMeshSysMem);
g_pMeshSysMem = pTempMesh;
}
V_RETURN(GenerateEnhancedMesh(pd3dDevice, g_dwNumSegs));
return S_OK;
}
bool SetTriangleCount(double k)
{
unsigned int segmentCount = (int)sqrt((float)k/
(float)g_OriginalNumFaces);
unsigned int targetFaceCount = 0;
unsigned int faceCount = g_OriginalNumFaces * (segmentCount *
segmentCount);
unsigned int faceCount2 = g_OriginalNumFaces * ((segmentCount + 1)
* (segmentCount + 1));
if (abs((int)(faceCount - k)) < abs((int)(faceCount2 - k)))
{
targetFaceCount = faceCount;
}
else
{
targetFaceCount = faceCount2;
}
g_dwNumSegs = (int)sqrt((float)targetFaceCount/(float)g_
OriginalNumFaces);
GenerateEnhancedMesh(g_pd3dDevice, g_dwNumSegs);
WCHAR wszBuf[256];
//StringCchPrintf(wszBuf, 256, L”Number of segments:%u”, g_dwNumSegs);
g_SampleUI.GetStatic(IDC_SEGMENTLABEL)->SetText(wszBuf);
g_SampleUI.GetSlider(IDC_SEGMENT)->SetValue(g_dwNumSegs);
return true;
}
bool SetShaderComplexity(double k)
{
unsigned int shaderlevel = (unsigned int)(k);
if (shaderlevel > 5)
return false;
g_CurrentTechnique = shaderlevel;
g_SampleUI.GetComboBox(IDC_ACTIVEEFFECT)->SetSelectedByData((void*)
shaderlevel);
return true;
}
Search WWH ::




Custom Search