Selamat Pagi rekan-rekan sekalian...di awal bulan suci ramadhan ini aku akan meneruskan cerita tentang pemrograman game dan grafik menggunakan OpenTK dan Visual Basic .Net, setelah sebelumnya aku membahas tentang dasar pemrograman dan tekstur di OpenTK 2D. Maka kali ini aku akan bercerita dan memberi contoh teknik masking pada OpenTK.
Pada artikel sebelumnya telah dibahas cara untuk mengisi sebuah poligon dengan tekstur, ada kekurangan dengan program tersebut seperti terlihat pada gambar di bawah ini (warna hitam yang mengelilingi pohon tampak).
Untuk menyempurnakan kekurangan ini diperlukan teknik masking, sehingga pohon akan tampak lebih nyata.
Gambar di atas mengilustrasikan proses masking, dan untuk menjalankan proses masking diperlukan sebuah file bitmap 24 bit yang hanya memiliki dua warna yaitu warna hitam sempurna dan warna putih sempurna.
Nilai bit RGB untuk warna hitam sempurna adalah 0 (nol) sedangkan nilai bit RGB untuk warna putih sempurna adalah 255. Dengan teknik masking maka pohon akan tampak seperti gambar di bawah ini (hilang dah warna hitam yang ada di sekeliling pohon).
Dengan menggunakan teknik ini maka objek-objek game dapat Anda tampilkan di layar monitor dengan lebih sempurna dan tampak lebih nyata (lebih hidup).
Berikut ini adalah kode program teknik masking.
Deklarasi variable tekstur.
Protected BG As UInteger
Protected Pohon1BMP As UInteger
Protected Pohon1BMP_Mask As UInteger
Protected Red As UInteger
Protected Black As UInteger
Load tekstur dan mask.
Protected Function Load_Texture() As Boolean
...
...
...
'pohon1 bmp
If LoadBmpTexture(Pohon1BMP, My.Application.Info.DirectoryPath & "\texture\pohon1.bmp") = False Then
Load_Texture = False
Exit Function
End If
'pohon1 mask
If LoadBmpTexture(Pohon1BMP_Mask, My.Application.Info.DirectoryPath &
"\texture\pohon1_mask.bmp") = False Then
Load_Texture = False
Exit Function
End If
...
...
...
Load_Texture = True
End Function
Tampilkan objek dengan teknik masking.
Private Sub Render_Pohon()
GL.Enable(EnableCap.Blend)
GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.Zero)
'Mask
GL.BindTexture(TextureTarget.Texture2D, Pohon1BMP_Mask)
GL.Begin(BeginMode.Quads)
'titik kiri bawah
GL.TexCoord2(0.0, 0.0) : GL.Vertex2(-300, -450)
'titik kanan bawah
GL.TexCoord2(1.0, 0.0) : GL.Vertex2(300, -450)
'titik kanan atas
GL.TexCoord2(1.0, 1.0) : GL.Vertex2(300, 200)
'titik kiri atas
GL.TexCoord2(0.0, 1.0) : GL.Vertex2(-300, 200)
GL.End()
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One)
'BMP
GL.BindTexture(TextureTarget.Texture2D, Pohon1BMP)
GL.Begin(BeginMode.Quads)
'titik kiri bawah
GL.TexCoord2(0.0, 0.0) : GL.Vertex2(-300, -450)
'titik kanan bawah
GL.TexCoord2(1.0, 0.0) : GL.Vertex2(300, -450)
'titik kanan atas
GL.TexCoord2(1.0, 1.0) : GL.Vertex2(300, 200)
'titik kiri atas
GL.TexCoord2(0.0, 1.0) : GL.Vertex2(-300, 200)
GL.End()
GL.Disable(EnableCap.Blend)
If CheckBox2.Checked = True Then
'warna merah untuk garis
GL.BindTexture(TextureTarget.Texture2D, Red)
GL.Begin(BeginMode.LineLoop)
GL.Vertex2(-300, -450) 'titik kiri bawah
GL.Vertex2(300, -450) 'titik kanan bawah
GL.Vertex2(300, 200) 'titik kanan atas
GL.Vertex2(-300, 200) 'titik kiri atas
GL.End()
End If
End Sub
Selesai deh cerita tentang teknik masking di OpenTK, mudah bukan, sangat sederhana tetapi sangat berguna untuk membuat game 2D. Setelah rekan—rekan menguasai teknik masking ini rekan-rekan sudah bisa men-design sebuah game dan menuangkannya ke programming, tetapi ada beberapa hal yang perlu rekan-rekan ketahui juga untuk melengkapi pembuatan sebuah game 2D, salah satunya matematika. Di lain kesempatan ogut akan membahas dan memberi contoh matematika yang bisa diterapkan di program game, sekian dulu.
Salam Sukses buat rekan-rekan
Heriady
heriady.yoh@gmail.com
Download program teknik masking ada disini, tinggal klik dan jalankan.
Artikel terkait
VB . Net dan OpenTK 2D
|
|
Tekstur di OpenTK 2D
|
|
Matematika rotasi untuk animasi OpenTK 2D
|
|
Membuat file bitmap 24 bit
|
|
Warna putih dan hitam sempurna
|
|
Membuat tekstur mask
|
|
Animasi Game 2D dengan Translasi
|
Tidak ada komentar:
Posting Komentar