本文整理汇总了C++中Waves::GetTriangleCount方法的典型用法代码示例。如果您正苦于以下问题:C++ Waves::GetTriangleCount方法的具体用法?C++ Waves::GetTriangleCount怎么用?C++ Waves::GetTriangleCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Waves
的用法示例。
在下文中一共展示了Waves::GetTriangleCount方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BuildWavesGeometryBuffers
void WavesApp::BuildWavesGeometryBuffers()
{
// Create the vertex buffer. Note that we allocate space only, as
// we will be updating the data every time step of the simulation.
D3D11_BUFFER_DESC vbd;
vbd.Usage = D3D11_USAGE_DYNAMIC;
vbd.ByteWidth = sizeof(Vertex) * m_waves.GetVertexCount();
vbd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
vbd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
vbd.MiscFlags = 0;
HR(m_pD3dDevice->CreateBuffer(&vbd,0,&m_pWavesVB));
// Create the index buffer. The index buffer is fixed, so we only
// need to create and set once.
std::vector<UINT> indices(3 * m_waves.GetTriangleCount()); // 3 indices per face
// Iterate over each quad.
UINT m = m_waves.GetRowCount();
UINT n = m_waves.GetColumnCount();
int k = 0;
for (UINT i = 0; i < m - 1; ++i)
{
for (DWORD j = 0; j < n - 1; ++j)
{
indices[k] = i*n + j;
indices[k + 1] = i*n + j + 1;
indices[k + 2] = (i + 1)*n + j;
indices[k + 3] = (i + 1)*n + j;
indices[k + 4] = i*n + j + 1;
indices[k + 5] = (i + 1)*n + j + 1;
k += 6; // next quad
}
}
{
D3D11_BUFFER_DESC ibd;
ibd.Usage = D3D11_USAGE_IMMUTABLE;
ibd.ByteWidth = sizeof(UINT) * indices.size();
ibd.BindFlags = D3D11_BIND_INDEX_BUFFER;
ibd.CPUAccessFlags = 0;
ibd.MiscFlags = 0;
D3D11_SUBRESOURCE_DATA iinitData;
iinitData.pSysMem = &indices[0];
HR(m_pD3dDevice->CreateBuffer(&ibd, &iinitData, &m_pWavesIB));
}
}
示例2: DrawScene
void WavesApp::DrawScene()
{
assert(m_pD3dImmediateContext);
assert(m_pSwapChain);
m_pD3dImmediateContext->ClearRenderTargetView(m_pRenderTargetView, reinterpret_cast<const float *>(&Colors::LightSteelBlue));
m_pD3dImmediateContext->ClearDepthStencilView(m_pDepthStencilView, D3D11_CLEAR_DEPTH | D3D11_CLEAR_STENCIL, 1.0f, 0);
//设置顶点输入数据流格式
m_pD3dImmediateContext->IASetInputLayout(m_pInputLayout);
//设置顶点拼装方式
m_pD3dImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
UINT stride = sizeof(Vertex);
UINT offset = 0;
//Update Constants before drawcall
XMMATRIX view = XMLoadFloat4x4(&m_viewMatrix);
XMMATRIX proj = XMLoadFloat4x4(&m_projMaxtrix);
//Draw all the passes
D3DX11_TECHNIQUE_DESC techDesc;
m_pShaderTech->GetDesc(&techDesc);
for (UINT i = 0; i < techDesc.Passes;++i)
{
{
//
//Draw the land.
//
m_pD3dImmediateContext->IASetVertexBuffers(0, 1, &m_pLandVB, &stride, &offset);
m_pD3dImmediateContext->IASetIndexBuffer(m_pLandIB, DXGI_FORMAT_R32_UINT, 0);
XMMATRIX world = XMLoadFloat4x4(&m_GridWorldMatrix);
XMMATRIX worldViewProj = world*view*proj;
m_pShaderMVP->SetMatrix(reinterpret_cast<float *>(&worldViewProj));
m_pShaderTech->GetPassByIndex(i)->Apply(0, m_pD3dImmediateContext);//首参数无意义,已被放弃
m_pD3dImmediateContext->DrawIndexed(m_uLandGridIndexCount, 0, 0);
}
{
//
//Draw the Waves.
//
m_pD3dImmediateContext->RSSetState(m_pWireframeRS);
m_pD3dImmediateContext->IASetVertexBuffers(0, 1, &m_pWavesVB, &stride, &offset);
m_pD3dImmediateContext->IASetIndexBuffer(m_pWavesIB, DXGI_FORMAT_R32_UINT, 0);
XMMATRIX world = XMLoadFloat4x4(&m_WavesWorldMatrix);
XMMATRIX worldViewProj = world*view*proj;
m_pShaderMVP->SetMatrix(reinterpret_cast<float *>(&worldViewProj));
m_pShaderTech->GetPassByIndex(i)->Apply(0, m_pD3dImmediateContext);//首参数无意义,已被放弃
m_pD3dImmediateContext->DrawIndexed(3 * m_waves.GetTriangleCount(), 0, 0);
m_pD3dImmediateContext->RSSetState(nullptr);
}
}
HR(m_pSwapChain->Present(0,0));
}