当前位置: 首页>>代码示例>>C++>>正文


C++ Waves::GetTriangleCount方法代码示例

本文整理汇总了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));
	}
}
开发者ID:wjingzhe,项目名称:DX11,代码行数:49,代码来源:WavesDemo.cpp

示例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));
}
开发者ID:wjingzhe,项目名称:DX11,代码行数:71,代码来源:WavesDemo.cpp


注:本文中的Waves::GetTriangleCount方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。