本文整理汇总了C++中Waves::GetVertexCount方法的典型用法代码示例。如果您正苦于以下问题:C++ Waves::GetVertexCount方法的具体用法?C++ Waves::GetVertexCount怎么用?C++ Waves::GetVertexCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Waves
的用法示例。
在下文中一共展示了Waves::GetVertexCount方法的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: UpdateScene
void WavesApp::UpdateScene(float dt)
{
// Convert Spherical to Cartesian coordinates.
float x = m_fRadius * sinf(m_fPhi) * cosf(m_fTheta);
float z = m_fRadius * sinf(m_fPhi) * sinf(m_fTheta);
float y = m_fRadius*cosf(m_fPhi);
XMVECTOR pos = XMVectorSet(x, y, z, 1.0f);
XMVECTOR target = XMVectorZero();
XMVECTOR up = XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f);
XMMATRIX V = XMMatrixLookAtLH(pos, target, up);
XMStoreFloat4x4(&m_viewMatrix, V);
//
// Every quarter second, generate a random wave.
//
static float s_baseT = 0.0f;
if ((mTimer.GetTotalTime() - s_baseT)>=0.25f)
{
s_baseT += 0.25f;
UINT i = 5 + rand() % 190;
UINT j = 5 + rand() % 190;
float r = MathHelper::RandF(1.0f, 2.0f);
m_waves.Disturb(i, j, r);//jingz 假设这个是生成浪花,数据变化时更新了什么内容呢?
}
m_waves.Update(dt);
//
// Update the wave vertex buffer with the new solution.
//
D3D11_MAPPED_SUBRESOURCE mappedData;
HR(m_pD3dImmediateContext->Map(m_pWavesVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedData));
Vertex * vertices = reinterpret_cast<Vertex *>(mappedData.pData);
for (UINT i = 0; i < m_waves.GetVertexCount();++i)
{
vertices[i].Pos = m_waves[i];
vertices[i].Color = XMFLOAT4(0.0f, 0.0f, 0.0f, 1.0f);
}
m_pD3dImmediateContext->Unmap(m_pWavesVB,0);
}