void CLoad3DS::ProcessNextMaterialChunk(t3DModel
*pModel, tChunk *pPreviousChunk)
{
//chunk semasa
tChunk currentChunk = {0};
//teruskan baca chunks sehingga
sub chunk berakhir
while (pPreviousChunk->bytesRead < pPreviousChunk->length)
{
//baca chunk seterusnya
ReadChunk(¤tChunk);
//semak chunk yg dibaca
switch (currentChunk.ID)
{
case MATNAME: //chunk
memegang nama bagi material
// disini tempat dimana kita
membaca nama material
currentChunk.bytesRead += fread(pModel->pMaterials[pModel->numOfMaterials
- 1].strName, 1, currentChunk.length - currentChunk.bytesRead,
m_FilePointer);
break;
case
MATDIFFUSE: // ia memegang
warna R G B bagi objek
ReadColorChunk(&(pModel->pMaterials[pModel->numOfMaterials
- 1]), ¤tChunk);
break;
case MATMAP:
// ini merupakan pengepalaan bagi maklumat texture
// proses membaca maklumat
metarial
ProcessNextMaterialChunk(pModel, ¤tChunk);
break;
case
MATMAPFILE: // menyimpan
fail nama bagi material
//tempat
membaca membaca semua fail material
currentChunk.bytesRead += fread(pModel->pMaterials[pModel->numOfMaterials
- 1].strFile, 1, currentChunk.length - currentChunk.bytesRead,
m_FilePointer);
break;
default:
// baca atau abaikan chunks
yang tidak dikenali
currentChunk.bytesRead += fread(gBuffer, 1, currentChunk.length
- currentChunk.bytesRead, m_FilePointer);
break;
}
// meletakkan bacaan byte daripada
chunk yang terakhir kedalam chunk yang sebelumnya
pPreviousChunk->bytesRead += currentChunk.bytesRead;
}
}