DirectX11 骷髅头示例Demo

骷髅头示例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. 程序运行结果截图

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值