DirectX12第六章-练习
Posted Liez
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DirectX12第六章-练习相关的知识,希望对你有一定的参考价值。
练习3.
(a)
//LINELIST std::array<VPosData, 8> posData = { VPosData({ XMFLOAT3(-2.0f, -1.0f, +1.0f) }), VPosData({ XMFLOAT3(-1.5f, +1.0f, +1.0f) }), VPosData({ XMFLOAT3(-1.0f, -0.3f, +1.0f) }), VPosData({ XMFLOAT3(-0.3f, +0.7f, +1.0f) }), VPosData({ XMFLOAT3(-0.0f, -0.3f, +1.0f) }), VPosData({ XMFLOAT3(+1.0f, +0.7f, +1.0f) }), VPosData({ XMFLOAT3(+2.0f, +0.0f, +1.0f) }), VPosData({ XMFLOAT3(+2.7f, +1.5f, +1.0f) }), }; std::array<std::uint16_t, 36> indices = { 0,1,2, 1,2,3, 2,3,4, 3,4,5, 4,5,6, 5,6,7, };
(b)
//LINELIST std::array<std::uint16_t, 36> indices = { 0,1,2,3,4,5,6,7 };
(c)
//LINELIST std::array<std::uint16_t, 36> indices = { 0,1, 1,2, 0,2, 1,3, 2,3, 3,4, 2,4, 3,5, 4,5, 5,6, 4,6, 5,7, 6,7 };
练习4:
//TRIANGLESTRIP std::array<VPosData, 5> posData = { VPosData({ XMFLOAT3(-1.0f, -1.0f, -1.0f) }), VPosData({ XMFLOAT3(+1.0f, -1.0f, -1.0f) }), VPosData({ XMFLOAT3(+1.0f, -1.0f, +1.0f) }), VPosData({ XMFLOAT3(-1.0f, -1.0f, +1.0f) }), VPosData({ XMFLOAT3(-0.0f, +0.78f, +0.0f) }), }; std::array<VColorData, 5> colorData{ VColorData({ XMFLOAT4(Colors::Green) }), VColorData({ XMFLOAT4(Colors::Green) }), VColorData({ XMFLOAT4(Colors::Green) }), VColorData({ XMFLOAT4(Colors::Green) }), VColorData({ XMFLOAT4(Colors::Red) }) }; std::array<std::uint16_t, 36> indices = { 0,1,2, 0,3,2, 0,1,4, 0,3,4, 1,2,4, 2,3,4, };
在update中添加代码获得旋转效果:
XMMATRIX Ry; static float Y = 0.0f; Ry = XMMatrixRotationY(Y); Y += 0.001; XMStoreFloat4x4(&mWorld, Ry);
添加另一个图形(新建buffer):
BoxApp.cpp
①修改ommandList:
std::unique_ptr<MeshGeometry> mBoxGeo02 = nullptr;
mCommandList->IASetVertexBuffers(0, 1, &mBoxGeo02->VertexBufferView());//设置顶点buffer视图,起始接口也为0,顶点buffer数量依旧为1个 mCommandList->IASetIndexBuffer(&mBoxGeo02->IndexBufferView());//设置索引buffer视图 mCommandList->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);//不变 mCommandList->SetGraphicsRootDescriptorTable(0, mCbvHeap->GetGPUDescriptorHandleForHeapStart()); mCommandList->DrawIndexedInstanced( mBoxGeo02->DrawArgs["cww"].IndexCount, 1, 0, 0, 0);//改变drawargs里的字符串,因为是另一个物体,用不同名字以区分
以上是关于DirectX12第六章-练习的主要内容,如果未能解决你的问题,请参考以下文章