Esempio n. 1
0
bool DG8DynamicVB::Initialise(int nv, int ni, int nc_p, int nc_t)
{
	int result = 0;
	
	m_numvertex	= nv;
	m_numindex	= ni;

	IDirect3DDevice8 *dev = ((DG8Graphics *)fusion->Graphics)->m_RenderDevice;

	result = dev->CreateVertexBuffer(	nv*sizeof(CUSTOMVERTEX),
										D3DUSAGE_DYNAMIC,
										D3DFVF_CUSTOMVERTEX,
										D3DPOOL_DEFAULT,
										&m_vertexbuffer);

	if(result != D3D_OK) return false;

	result = dev->CreateIndexBuffer(	ni*sizeof(int),
										D3DUSAGE_DYNAMIC,
										D3DFMT_INDEX32,
										D3DPOOL_DEFAULT,
										&m_indexbuffer);

	CUSTOMVERTEX *ptr = NULL;

	result = m_vertexbuffer->Lock(0,0,(unsigned char **)&ptr,D3DLOCK_DISCARD);

	if(result == D3D_OK){
		for(int a=0;a<nv;a++){
			ptr[a].colour = DG8COLOUR(	(char)m_material.Diffuse.r*256,
																	(char)m_material.Diffuse.g*256,
																	(char)m_material.Diffuse.b*256,
																	(char)m_material.Diffuse.a*256);
		}
	}

	m_vertexbuffer->Unlock();

	if(result != D3D_OK) return false;

	return true;
}