Flowchart Operasi CreateStaticBuffer Flowchart Diagram

3.5.10. Flowchart Operasi CreateStaticBuffer

Operasi CreateStaticBuffer merupakan operasi dari kelas TumozD3DVCManager yang juga merupakan operasi turunan dari interface TumozVertexCacheManager. Tugas dari operasi ini adalah untuk membuat buffer verteks dan indeks statis berdasarkan data dari parameter agar dapat digunakan nanti pada saat proses rendering. Awal proses dari operasi ini dimulai dari mengalokasikan memory untuk pointer obyek buffer statis baru dan menyimpan atribut-atribut dari paramter seperti jumlah verteks dan indeks serta id skin yang berhubungan dengan buffer tersebut. Sebelum memasukkan data verteks maka perlu di periksa terlebih dahulu jenis format FVF dari verteks tersebut agar bisa diketahui langkah data stride dan ukuran dari verteks tersebut. Langkah selanjutnya adalah apabila menggunakan indeks maka buffer indeks LPDIRECT3DINDEXBUFFER9 di buat menggunakan fungsi CreateIndexBuffer dari device. Untuk mengisi data dari parameter ke dalam buffer indeks maka dilakukan dengan cara metode penguncian menggunakan fungsi Lock dan Unlock dari fungsi obyek indeks buffer tersebut. Untuk membuat buffer verteks LPDIRECT3DVERTEXBUFFER9 juga hampir sama dengan pembuatan buffer indeks yaitu menggunakan fungsi CreateVertexBuffer dari device. Lalu data verteks dari parameter di simpan di antara dua metode penguncian Lock dan Unlock dari fungsi obyek verteks buffer tersebut. Detil dari proses flowchart operasi ini digambarkan pada gambar 3.39. STIKOM SURABAYA Mulai Cek apakah Jumlah Static Buffer = MAX_ID-1 Return TUMOZ_OUTOFMEMORY Ya Selesai Jumlah Static Buffer mod 50 == 0? Tidak Alokasikan 50 slot memory Static Buffer baru ke pointer Static Buffer global Ya Cek apakah nilai pointer Static Buffer global tidak valid? Ya Simpan Jml Vertex Index jg ID Skin dari param ke dlm Static Buffer global indeks baru Tidak Tidak Cek masing-masing Vertex ID dan Set Stride dan FVF yg sesuai ke dlm Static Buffer global indeks baru Cek apakah Vertex ID tidak ketemu? Return TUMOZ_INVALIDID Ya Tidak Jumlah Indices 0 Set atribut bIndis = true dan jml triangle = indis3 pada Static buffer global indeks baru Ya Panggil CreateIndexBuffer dgn atribut data IB pada Static Bufffer global indeks baru sbg parameter dan simpan HResultnya Cek apakah HResult CreateIndexBuffer gagal? Return TUMOZ_CREATEBUFFER Ya Cek apakah pemanggilan Lock pada data IB Static Buffer indeks baru dgn pData sbg param berhasil? Tidak Copy data indis dari param ke dlm pointer pData yg telah dikunci Ya Return TUMOZ_BUFFER LOCK Tidak Set atribut bIndis = false, jml triangle = verts3 dan data IB = NULL pada Static buffer global indeks baru Tidak Cek apakah D3D menggunakan Shader? Buat variabel pendukung seperti DWORD dwActualFVF dan pointer VOID pData dwActualFVF = 0 Ya Simpan FVF Static Buffer global indeks baru ke dwActualFVF Tidak Panggil CreateVertexBuffer dgn dwActualFVF dan atribut data VB pada Static Bufffer global indeks baru sbg parameter dan simpan HResultnya Cek apakah HResult CreateVertex Buffer gagal? Ya Cek apakah pemanggilan Lock pada data VB Static Buffer indeks baru dgn pData sbg param berhasil? Tidak Copy data verts dari param ke dlm pointer pData yg telah dikunci Ya Panggil method Unlock pada data IB Static Buffer indeks baru Panggil method Unlock pada data VB Static Buffer indeks baru Tidak Masukkan jumlah Static buffer ke dalam pointer pnID dari parameter sebagai ID baru Increment jumlah Static Buffer yang ada Return TUMOZ_OK Gambar 3.39. Flowchart Operasi CreateStaticBuffer STIKOM SURABAYA

3.5.11. Flowchart Operasi CreateFont