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