3.5.5. Flowchart Operasi UseWindow
Operasi ini
juga merupakan
operasi turunan
dari interface
TumozRenderDevice yang terdapat pada kelas implementasi TumozD3D. Operasi ini berfungsi untuk menentukan jendela tampilan utama yang akan dijadikan
target proses rendering baik pada jendela tampilan tunggal atau pada beberapa jendela tampilan. Untuk lebih jelasnya flowchart dari operasi tersebut dapat
dilihat pada gambar 3.33.
Mulai
Buat Obyek Backbuffer dari
LPDIRECT3DSURFA CE9 dan set NULL
Cek dari Present Parameter apakah
bukan mode windows?
Return TUMOZ_OK
Ya nHwnd =
m_nNumhW nd
Tidak
Return TUMOZ_INVALIDID
Ya
Selesai Cek panggil
m_pChain[nHwnd] -GetBackBuffer
gagal? Tidak
Tampil log error: GetBackBuffer
gagal di UseWindow
Ya
Return TUMOZ_FAIL
Set Target Render
D3DDevice ke Backbuffer
Tidak
Pointer BackBuffer di
Release
m_nActivehWn d = nHwnd
Return TUMOZ_OK
Gambar 3.33. Flowchart Operasi UseWindow
STIKOM SURABAYA
3.5.6. Flowchart Operasi InitStage
Tujuan dari operasi ini adalah untuk melakukan kalkulasi atau perhitungan matriks proyeksi perspektif dan proyeksi orthogonal berdasarkan field
of view FOV yang diberikan pada viewport stage yang dituju. Operasi ini
merupakan bagian dari kelas TumozD3D yang juga merupakan operasi turunan dari interface TumozRenderDevice. Detil dari proses flowchart operasi ini
digambarkan pada gambar 3.34.
Mulai
Cek pointer Viewport ada?
Copy pView ke dalam
m_VP[nStage] Ya
Buat Viewport baru dari m_dwWidth dan
m_dwHeight lalu copy ke dalam
m_VP[nStage] Tidak
nStage3 || nStage0
nStage=0 Ya
Hitung Aspect Ratio Stage
Tidak Cek
apakah perhitungan
Matriks Proyeksi Perspektif
gagal?
Return TUMOZ_FAIL
Ya Hitung Matriks
Proyeksi Orthogonal
Selesai Tidak
Gambar 3.34. Flowchart Operasi InitStage
STIKOM SURABAYA
3.5.7. Flowchart Operasi CreateVShader
Operasi CreateVShader merupakan operasi penting bagi kelas TumozD3D yang berfungsi untuk membuat obyek verteks shader untuk device
Direct3D. Shader tersebut dapat mengkalkulasi efek rendering pada perangkat keras grafis dengan tingkat fleksibilitas yang sangat tinggi. Operasi ini juga
merupakan operasi turunan dari interface TumozRenderDevice. Pengecekan batas maksimum dari obyek verteks shader dilakukan pada
awal proses, lalu dilanjutkan dengan memeriksa dari parameter fungsi apakah shader sudah di kompilasi dan setelah itu di cek juga apakah menggunakan file
atau data langsung. Jika sudah di kompilasi maka datanya langsung disimpan ke dalam pointer agar dapat di proses. Sebaliknya jika belum maka perlu memanggil
fungsi dari Direct3D yaitu D3DXAssembleShaderFromFile untuk data yang berasal dari file atau D3DXAssembleShader untuk data langsung. Hasil dari
kompilasi tersebut kemudian disimpan ke dalam pointer dengan menggunakan fungsi GetBufferPointer.
Langkah selanjutnya dari proses flowchart ini adalah membuat obyek verteks
shader menggunakan
fungsi dari
pointer device
yaitu CreateVertexShader
berdasarkan pointer yang berisi data hasil kompilasi yang telah di buat sebelumnya. Setelah obyek verteks shader berhasil di buat lalu
idnya di simpan agar dapat digunakan dan proses terakhir dari flowchart adalah dengan menambah jumlah total obyek verteks shader yang telah di buat. Untuk
lebih jelasnya flowchart dari operasi ini dapat dilihat pada gambar 3.35.
STIKOM SURABAYA
Mulai Buat variabel
pointer D3DBuffer, DWORD, HRESULT
dan HANDLE
Cek apakah jumlah
Vertex Shader melebihi batas
maksimum?
Tampil log error: sudah
mencapai jumlah maks
Ya
Return TUMOZ_OUTOFMEM
ORY
Selesai Cek
dari parameter apakah sudah
dicompile? Tidak
Diambil dari File?
Ya
Panggil CreateFile dengan data dari
parameter sebagai argumen dan simpan
hasilnya pada hFile Ya
hFile == INVALID_HANDLE
_VALUE
Tampil log error:
CreateFile gagal
Ya
Return TUMOZ_FILENOT
FOUND Buat FileMapping
dan ambil datanya dan simpan ke
dalam pointer DWORD pVS
Tidak Simpan langsung
data dari parameter
kedalam pointer DWORD pVS
Tidak Diambil dari
File? Tidak
Panggil D3DXAssembleShaderFrom
File dengan data dari parameter dan simpan hasil
HRESULT hrA Ya
Panggil D3DXAssembleShader
dengan data dari parameter dan simpan
hasil HRESULT hrA Tidak
Cek apakah hrA berhasil?
Simpan data pointer ke pVS menggunakan
GetBufferPointer Ya
Tampil log error
Tidak
Return TUMOZ_FAIL
Simpan ID kedalam variabel global
Vertex Shader Bebaskan
resource handle Increment jumlah
Vertex Shader yang ada
Return TUMOZ_OK
Cek apakah pembuatan
CreateVertexSha der dgn pVS
gagal? Ya
Tidak
Gambar 3.35. Flowchart Operasi CreateVShader
STIKOM SURABAYA
3.5.8. Flowchart Operasi AddSkin