要做一个NoisyHeart,最后说一下这个代码应该这么开始打吧:
1.配置要你DirectX11开发环境不说,这个网上一大堆;
2.做一个ModelViewerCamera见Part1;
3.创建一个控制点的XMFLOAT3数组(D3DXVECTOR3数组也可以);
4.create一个渲染用VertexBuffer,Vertex结构见Part3,再用它create一个ID3D11UnorderedAccessView供ComputeShader用;
5.create两个计算用的VertexBuffer,一个用控制点的XMFLOAT3数组初始化,一个用PerlinSeed随机浮点数组初始化,得到2个供ComputeShader用的ID3D11ShaderResourceView;
6.create 所需的shader,计算VertexBuffer并渲染。
建议先做简单的beam,测试细分shader能否正常运作。
爱心附送心形17个控制点:
m_pControlPoints[0] = XMFLOAT3( 0, 0, 0);
m_pControlPoints[2] = XMFLOAT3( 2, 3, 0);
m_pControlPoints[4] = XMFLOAT3( 4, 1, 0);
m_pControlPoints[6] = XMFLOAT3( 3, - 1, 0);
m_pControlPoints[8] = XMFLOAT3( 0, - 3, 0);
m_pControlPoints[10] = XMFLOAT3( - 3, - 1, 0);
m_pControlPoints[12] = XMFLOAT3( - 4, 1, 0);
m_pControlPoints[14] = XMFLOAT3( - 2, 3, 0);
m_pControlPoints[16] = XMFLOAT3( - 0, 0, 0);
m_pControlPoints[1] = XMFLOAT3( 0.5, 1.5, 0);
m_pControlPoints[3] = XMFLOAT3( 3.5, 2, 0);
m_pControlPoints[5] = XMFLOAT3( 4.5, 0, 0);
m_pControlPoints[7] = XMFLOAT3( 2.5, - 2, 0);
m_pControlPoints[9] = XMFLOAT3( - 2.5, - 2, 0);
m_pControlPoints[11] = XMFLOAT3( - 4.5, 0, 0);
m_pControlPoints[13] = XMFLOAT3( - 3.5, 2, 0);
m_pControlPoints[15] = XMFLOAT3( - 0.5, 1.5, 0);