Flowchart Operasi UseWindow Flowchart Operasi InitStage Flowchart Operasi CreateVShader

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