Archived

This topic is now archived and is closed to further replies.

littleboy55

VertexBuffer Problems please help

Recommended Posts

Hi, iv been working for hours on this problem and still i can find no information. i just cant figure out whats wrong someone please help here is the code void CDLevel::Load(char *filename, char *lightmap) { BYTE *read = 0; BYTE *write = 0; D3DVERTEXBUFFER_DESC desc; LPDIRECT3DVERTEXBUFFER8 vb; g_Debug->Out("hello","hello"); HRESULT r; //assert(read!=0); //Loads X files and converts them into correct FVF format if(FAILED(level.LoadX((char*)filename))) return; level.EnableMulti(); if(FAILED(light.LoadX((char*)lightmap))) return; light.EnableMulti(); light.m_pMesh->GetVertexBuffer(&vb); vb->GetDesc(&desc); cerr << light.GetNumVerts() << "\n" << level.GetNumVerts(); //assert(level.GetNumVerts()<=light.GetNumVerts()); //assert(r==E_FAIL); //assert(r==S_OK); const unsigned int size = level.GetNumVerts(); // storage space Multi *a = new Multi[size]; Multi *b = new Multi[size]; // locks the vertex buffers of the lightmap mesh + level mesh light.m_pMesh->LockVertexBuffer( D3DLOCK_READONLY, &read); level.m_pMesh->LockVertexBuffer( D3DLOCK_READONLY, &write); int Offset = 0; for( int i= 0;i,&write+Offset,sizeof(Multi)); MoveMemory(&b[i],&read+Offset,sizeof(Multi)); Offset+=sizeof(*read); } Offset = 0; light.m_pMesh->UnlockVertexBuffer(); // unlock vertex buffers level.m_pMesh->UnlockVertexBuffer(); assert(r==E_FAIL); // lock the vertex buffer agian this time to write over it level.m_pMesh->LockVertexBuffer( D3DLOCK_DISCARD , &write); Offset=0; for(i = 0;iUnlockVertexBuffer(); // release storage delete []a; delete []b; } level and light are just wrappers for D3DXMeshes, Enable Multi just clones the m_pMesh onto itself with a new FVF format, i dont know what could possobly be wrong m_pMesh is just a D3DXMesh please please help this problem is killing me

Share this post


Link to post
Share on other sites
shit, i knew i was forgeting something duh um the program shuts down in the first read loop which is why i think that something is wrong with my FVF but here is the code tat changes the FVF format

void CDMesh::EnableMulti()
{
LPD3DXMESH pTempMesh = 0;
m_pMesh->CloneMeshFVF(
D3DXMESH_MANAGED,
D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_SPECULAR|D3DFVF_TEX2,
g_pDevice,
&pTempMesh);
D3DXComputeNormals(pTempMesh);
m_pMesh->Release();
m_pMesh = pTempMesh;
}

thanx alot

Share this post


Link to post
Share on other sites