Siang ini aku akan membahas tentang program tekstur pada OpenTK 2D dengan menggunakan VB .Net, artikel ini menyambung artikel sebelumnya, artikel tentang OpenTK dan VB .Net.
Tekstur diperlukan pada pemrograman game untuk menampilkan objek game seperti pesawat, peluru, pohon, rumah dan lain-lain, dengan menggunakan tekstur Anda dapat berkreasi tanpa batas dalam membuat sebuah game.
Pada gambar di bawah dapat dilihat sebuah tekstur bergambar pohon yang dibuat dari sebuah file bitmap 24 bit.
File bitmap 24 bit yang akan digunakan untuk tekstur harus dikonversi terlebih dahulu.
Protected Function LoadBmpTexture(ByRef textureId As Integer, ByVal filename As String) As Boolean
On Error Resume Next Dim bmp As New Bitmap(filename)
If Err.Number <> 0 Then
LoadBmpTexture = False
Exit Function
End If
bmp.RotateFlip(RotateFlipType.RotateNoneFlipY)
Dim data As BitmapData = bmp.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height),
System.Drawing.Imaging.ImageLockMode.ReadOnly,
System.Drawing.Imaging.PixelFormat.Format32bppArgb)
GL.GenTextures(1, textureId)
GL.BindTexture(TextureTarget.Texture2D, textureId)
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba,
bmp.Width, bmp.Height, 0, OpenGL.PixelFormat.Bgra,
PixelType.UnsignedByte, data.Scan0)
bmp.UnlockBits(data) GL.TexParameter(TextureTarget.Texture2D,
TextureParameterName.TextureMinFilter,
TextureMinFilter.Linear)
GL.TexParameter(TextureTarget.Texture2D,
TextureParameterName.TextureMagFilter,
TextureMagFilter.Linear)
LoadBmpTexture = True
End Function
Fungsi di atas adalah fungsi yang digunakan untuk mengkonversi file bitmap 24 bit menjadi sebuah tekstur, contoh cara untuk me-load file bmp dan mengubahnya menjadi tekstur dapat Anda lihat seperti berikut ini.
Protected Function Load_Texture() As Boolean
'BG
If LoadBmpTexture(BG, My.Application.Info.DirectoryPath & "\texture\BG.bmp") = False Then
Load_Texture = False
Exit Function
End If
'pohon1
If LoadBmpTexture(Pohon1BMP, My.Application.Info.DirectoryPath & "\texture\pohon1.bmp") = False Then
Load_Texture = False
Exit Function
End If
'Red
If LoadBmpTexture(Red, My.Application.Info.DirectoryPath & "\texture\Red.bmp") = False Then
Load_Texture = False
Exit Function
End If
'Black
If LoadBmpTexture(Black, My.Application.Info.DirectoryPath & "\texture\Black.bmp") = False Then
Load_Texture = False
Exit Function
End If
Load_Texture = True
End Function
Agar poligon persegipanjang yang ditampilkan ke layar monitor bertekstur pohon seperti gambar di bawah maka program yang telah Anda buat sebelumnya perlu diubah sedikit.
Berikut listing kode programnya.
Deklarasi variable untuk tekstur.
Protected BG As UInteger
Protected Pohon1BMP As UInteger
Protected Red As UInteger
Protected Black As UInteger
Load tekstur.
Private Sub GlControl1_Load(sender As Object, e As EventArgs) Handles GlControl1.Load
GL.ClearColor(Color.White)
'''''''''''''''''''''
'Load tekstur
'''''''''''''''''''''
GL.Enable(EnableCap.Texture2D)
If Load_Texture() = False Then
GlControl_Loaded = False
MsgBox("Error loading texture, program dihentikan", vbOKOnly, "Loading Texture")
End
End If
...
...
...
GlControl_Loaded = True
End Sub
Beri tekstur pada polygon / persegipanjang.
Private Sub Render_Pohon()
'aktifkan tektur pohon
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()
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
Render grafik.
Private Sub GlControl1_Paint(sender As Object, e As PaintEventArgs) Handles GlControl1.Paint
GL.Clear(ClearBufferMask.ColorBufferBit)
GL.Clear(ClearBufferMask.DepthBufferBit)
Render_BG()
Render_Pohon()
GarisSumbuXY()
'Swap Buffer
GraphicsContext.CurrentContext.VSync = True
GlControl1.SwapBuffers()
End Sub
Tuntas sudah cerita tentang tekstur pada OpenTK 2D, program pembuatan tekstur ini amat bermanfaat jika rekan-rekan hendak membuat game 2D, pada lain kesempatan ogut akan membahas tentang teknik masking di OpenTK.
Salam Sukses Selalu
Heriady
heriady.yoh@gmail.com
Download source code progam OpenTK dengan tekstur ada disini.
Artikel terkait
Artikel terkait
VB . Net dan OpenTK 2D
|
|
Teknik masking pada OpenTK 2D
|
|
Matematika rotasi untuk animasi OpenTK 2D
|
|
Animasi Game 2D dengan Translasi
|
Tidak ada komentar:
Posting Komentar