您的位置:首页 > 其它

DirectX11 骷髅头示例Demo

2015-10-02 15:46 183 查看

骷髅头示例Demo

1. 文件格式

虽然对于本书的某些示例来说,盒子、网格、球和圆柱形就足够了,但是还有些示例要绘制更加复杂的几何体。本书的后面我们会介绍如何从一个流行的3D模型格式加载3D网格。同时,我们已经将一个骷髅网格的几何体(见后面的图)导出为一个顶点(只包含位置和法线向量)和索引的简单列表,可以使用标准的C++文件I/O从文件中读取顶点和索引,并将它们复制到顶点和索引缓冲。文件的格式是一个非常简单的文本文件:

VertexCount:31076
TriangleCount:60339
VertexList(pos, normal)
{
0. 592978  1. 92413  -2. 62486  0. 572276  0. 816877  0. 0721907
0. 571224  1. 94331  -2. 66948  0. 572276  0. 816877  0. 0721907
0. 609047  1. 90942  -2. 58578  0. 572276  0. 816877  0. 0721907
…
}
TriangleList
{
0  1  2
3  4  5
6  7  8
…
}


2. 加载文件中的几何体

完整的Demo项目源代码请自行到DirectX11龙书的官网下载。建议用VS阅读源代码。

void SkullApp::BuildFX()
{
std::ifstream fin("fx/color.fxo", std::ios::binary);

fin.seekg(0, std::ios_base::end);
int size = (int)fin.tellg();
fin.seekg(0, std::ios_base::beg);
std::vector<char> compiledShader(size);

fin.read(&compiledShader[0], size);
fin.close();

HR(D3DX11CreateEffectFromMemory(&compiledShader[0], size,
0, md3dDevice, &mFX));

mTech    = mFX->GetTechniqueByName("ColorTech");
mfxWorldViewProj = mFX->GetVariableByName("gWorldViewProj")->AsMatrix();
}


3. 程序运行结果截图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: