Toturial OpenGL

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

____________________________________________________________________________________________________________

:: Fungsi "GetString( )" :

  1. i. Fungsi ini membaca huruf yang berniai string, yer adik-adik mari kita bermula daripada pengistiharan fungsi
  1. int CLoad3DS::GetString(char *pBuffer)
    {

ii. Kita akan membuat gelungan LOOP bagi membaca semua huruf yang bernilai string didalam fail :-

int index = 0; //mengumpukkan nilai 0 sebagai nilai awalan bagi Index

fread(pBuffer, 1, 1, m_FilePointer);
// Baca 1 byte data yang menjadi huruf pertama perkataan

while (*(pBuffer + index++) != 0) {
// Ulang sehingga NULL

fread(pBuffer + index, 1, 1, m_FilePointer);/* Baca satu huruf pada stau masa sehingga mencapai NULL */
}

return strlen(pBuffer) + 1; /* Pulangan panjang perkataan, iaitu berapa banyak byte yang dibaca (termasuk NULL) */
}

__________________________________________________________________________________________________

:: Fungsi "ReadColorChunk( )" :

  1. i. Fungsi membaca data warna RGB, aturcaranya adalah seperti dibawah :-

    <Info> RGB adalah sebuah warna asas bagi paparan komputer "R=RED" , "G=GREEN" and "B=BLUE"

      1. void CLoad3DS::ReadColorChunk(tMaterialInfo *pMaterial, tChunk *pChunk)
        {
        tChunk tempChunk = {0};

      2. // Baca maklumat tentang warna chunk
        ReadChunk(&tempChunk);


        // Baca warna R G B (3 bytes - 0 hingga 255)
        tempChunk.bytesRead += fread(pMaterial->color, 1, tempChunk.length - tempChunk.bytesRead, m_FilePointer);

        // Meletakkan bacaan bytes bagi semua chunks
        pChunk->bytesRead += tempChunk.bytesRead;
        }

_________________________________________________________________________________________________

 

:: Fungsi "ReadVertexIndices( )" :

  1. i. Fungsi ini membaca index untuk tatasusunan vertex, aturcaranya ada;ah seperti dibawah yer aadik-adik ;-

    void CLoad3DS::ReadVertexIndices(t3DObject *pObject, tChunk *pPreviousChunk)
    {
    unsigned short index = 0;//digunakan untuk membaca permukaan index


    <Info>" didalam arahan membaca index vertex bagi objek pertama anda dikehendaki untuk membaca bilangannya dan seterusnya membaca nilainy sekali. Dingatkan anda hanya perlu membaca 3 daripada 4 nilai bagi setiap permukaan. Akhir sekali benderanya(flag) dapat
    dilihat dalam 3D Studio Max tetapi ia tidak memberi sebarang makna bagi anda"


    // membaca bilangan permukaan bagi objek
    pPreviousChunk->bytesRead += fread(&pObject->numOfFaces, 1, 2, m_FilePointer);


    // mengumpukkan memory yang cukup bagi permukaan dan mengenalpasti rekabentuknya
    pObject->pFaces = new tFace [pObject->numOfFaces];
    memset(pObject->pFaces, 0, sizeof(tFace) * pObject->numOfFaces);


    // melalui semua permukaan bagi objek
    for(int i = 0; i < pObject->numOfFaces; i++)
    {

    <Info>"seterusnya membaca permukaan A kemudian B dan C, tetapi tidak membaca nilai yang keempat akhir sekali benderanya(flag) dapat dapat dilihat dalam 3D Studio Max tetapi ia tidak memberi sebarang makna bagi anda"


    for(int j = 0; j < 4; j++)
    {

    // membaca indek pertama bagi permukaan yang sedia ada
    pPreviousChunk->bytesRead += fread(&index, 1, sizeof(index), m_FilePointer);

    if(j < 3)
    {

    //menyimpan index bagi setiap rekabentuk permuakaan
    pObject->pFaces[i].vertIndex[j] = index;
    }
    }
    }

___________________________________________________________________________________________________________ }

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

1