Toturial OpenGL

Just To show You how to import .3ds File To OpenGL

____________________________________________________________________________________________________________

:: Fungsi "ProcessNextObjectChunk( )" :

  1. i. Fungsi ini digunakan untuk mengendalikan semua maklumat mengenai objek di dalam fail sila taip aturcara seperti di bawah :-

    void CLoad3DS::ProcessNextObjectChunk(t3DModel *pModel, t3DObject *pObject, tChunk *pPreviousChunk)
    {

    //chunk semasa
    tChunk currentChunk = {0};

    //teruskan baca chunks sehingga sub chunk berakhir
    while (pPreviousChunk->bytesRead < pPreviousChunk->length)
    {
    //baca chunk seterusnya
    ReadChunk(&currentChunk);

    //semak chunk yg dibaca
    switch (currentChunk.ID)
    {


    case OBJECT_MESH: //memberitahu kita sedang baca objek baru

    //jumpa objek baru, jadi baca maklumat menggunakan rekursif
    ProcessNextObjectChunk(pModel, pObject, &currentChunk);
    break;

    case OBJECT_VERTICES: //ini adalah verteks objek
    ReadVertices(pObject, &currentChunk);
    break;

    case OBJECT_FACES: //ini adalah maklumat permukaan objek
    ReadVertexIndices(pObject, &currentChunk);
    break;

    case OBJECT_MATERIAL: //pegang nama material objek

    <Info> "chunks ini memegang nama yang berpautan dengan material dimana sesuatu objek telah di umpukkan keatasnya disamping itu juga mengandungi maklumat mengenai warna dan mapping. Pada kebiasaannya chunk memegang permukaan yang mana texture telah diumpukkan keatasnya. Kadang-kadang banyak texture yang diumpukkan kepada satu objek, atau hanya mempunyai texture sahaja pada permukaan objek, tapi pada Case OBJECT_MATERIAL anda hanya perlu tahu nama bagi material itu"


    //Sekarang kita membaca nama material yang telah diumpukka kepada objek.
    ReadObjectMaterial(pModel, pObject, &currentChunk);
    break;

    case OBJECT_UV: //ia memegang kordinat UV texture bagi objek


    //ia memegang semua kordinat UV texture bagi semua objek. Mari kita baca bersama adik-adik
    ReadUVCoordinates(pObject, &currentChunk);
    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;
    }
    }

 

__________________________________________________________________________________________________

<Next Step Tutorial>
Hosted by www.Geocities.ws

1