Esempio n. 1
0
CProgressiveGeometry *CMesh::BuildProgressiveGeometry(int iMaterial, UINT uiNoReorderVertexCount, UINT uiMaxCollapses)
{
  CProgressiveGeometry *pProgGeom = new CProgressiveGeometry();
  CArray<uint8_t> arrUsedVertices;

  if (uiNoReorderVertexCount > (UINT) (m_arrCollapses.m_iCount + m_hashVertices.m_iCount))
    uiNoReorderVertexCount = m_arrCollapses.m_iCount + m_hashVertices.m_iCount;

  if (!m_arrReverseReorder.m_iCount)
    BuildReverseReorder(uiNoReorderVertexCount);
  
  pProgGeom->m_pInputDesc = m_pOrgGeom->m_pInputDesc;
  if (!m_pVB)
    m_pVB = BuildVB(uiNoReorderVertexCount);
  pProgGeom->m_pVB = m_pVB;
  pProgGeom->m_pIB = BuildIB(iMaterial, arrUsedVertices);
  pProgGeom->m_ePrimitiveType = CGeometry::PT_TRIANGLELIST;
  pProgGeom->m_uiVertices = pProgGeom->GetVBVertexCount();
  pProgGeom->m_uiIndices = pProgGeom->GetIBIndexCount();
  if (m_pOrgGeom->m_pBound)
    pProgGeom->m_pBound = m_pOrgGeom->m_pBound->Clone();

  BuildCollapseBuffer(uiNoReorderVertexCount || iMaterial >= 0, uiMaxCollapses, arrUsedVertices, pProgGeom);

  return pProgGeom;
}
Esempio n. 2
0
void ParticleSystem::init(ID3D11Device* device, ParticleEffect* fx, ID3D11ShaderResourceView* texArraySRV, ID3D11ShaderResourceView* randomTexSRV, UINT maxParticles)
{
	mMaxParticles = maxParticles;

	mFX = fx;

	mTexArraySRV  = texArraySRV;
	mRandomTexSRV = randomTexSRV;

	BuildVB(device);
}
void ParticleSystem::Init( HlslEffect effect, Texture dataTexture, size_t maxParticles )
{
	mFX = effect;

	mTexure  = dataTexture;

	mMaxParticles = maxParticles;

	mRandomTex = Texture::createRandom1D();

	const D3D11_INPUT_ELEMENT_DESC elements[5] = 
	{
		{"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0,  0, D3D11_INPUT_PER_VERTEX_DATA, 0},
		{"VELOCITY", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},
		{"SIZE",     0, DXGI_FORMAT_R32G32_FLOAT,    0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0},
		{"AGE",      0, DXGI_FORMAT_R32_FLOAT,       0, 32, D3D11_INPUT_PER_VERTEX_DATA, 0},
		{"TYPE",     0, DXGI_FORMAT_R32_UINT,        0, 36, D3D11_INPUT_PER_VERTEX_DATA, 0},
	};

	HR(mFX.createInputLayout(elements, ARRAYSIZE(elements), &mInputLayout));
	BuildVB();
}