Jumat, 19 Juni 2015

Teknik Masking pada OpenTK 2D

Suatu pagi di awal bulan suci ramadhan...rasanya damai sekali di hati...entah apa sebabnya...

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