[Intermediate] Drawing Surfaces
+2
Zihad Rizky Edwin Fikri
Asuna
6 posters
Halaman 1 dari 1
[Intermediate] Drawing Surfaces
Pada keadaan tertentu Anda mungkin tidak ingin menggambar secara langsung di layar melainkan di suatu "canvas" yang dapat digunakan kemudian untuk menggambarnya di layar, yang disebut surface. Layar akan selalu diredraw pada interval tertentu (screen refresh rate), sedangkan pada surface tidak demikian.
Contoh simplenya adalah pada aplikasi painting, di mana pengguna menggambar pada surface yang tidak akan hilang tiap saat yang kemudian akan didraw lagi ke layar. Dari contoh tersebut keuntungan penggunaan surface adalah efisiensi penggambaran objek secara statik/diam yang membutuhkan beban komputasi (mis. text, sprite yg banyak, tiled texture, dsb).
Berikut fungsi-fungsi untuk surface.
surface_create(w,h)
w,h = lebar dan tinggi surface yang akan dicreate
Return: nilai id surface
surface_create_ext(name, w, h) <Studio only, HTML5 module>
name = nama elemen canvas HTML5 yang ditautkan pada surface
surface_free(id)
Mendealokasi memory yang digunakan oleh surface
surface_exists(id)
Apakah surface id exist
surface_get_width(id), surface_get_height(id)
Lebar dan tinggi surface
surface_get_texture(id)
Texture yang berkorespondensi dengan surface, dapat digunakan untuk menggambar object bertexture dengan surface
surface_set_target(id)
Set target ke surface untuk didraw
surface_reset_target(id)
Set kembali target ke layar untuk didraw
surface_getpixel(id,x,y)
Warna pixel pada (x,y). Proses ini tidak begitu cepat, so use with care.
surface_save_part(id,fname,x,y,w,h)
Save bagian (x,y,w,h) dari surface dalam file png
surface_copy(destination,x,y,source)
Copy surface ke surface tujuan pada (x,y), no alpha blending
surface_copy_part(destination,x,y,source,xs,ys,ws,hs)
Copy bagian surface ke surface tujuan pada (x,y), no alpha blending
Berikut fungsi-fungsi untuk menggambar surface.
draw_surface(id,x,y)
draw_surface_stretched(id,x,y,w,h)
draw_surface_tiled(id,x,y)
draw_surface_part(id,left,top,width,height,x,y)
draw_surface_ext(id,x,y,xscale,yscale,rot,color,alpha)
draw_surface_stretched_ext(id,x,y,w,h,color,alpha)
draw_surface_tiled_ext(id,x,y,xscale,yscale,color,alpha)
draw_surface_part_ext(id,left,top,width,height,x,y,xscale,yscale,color,alpha)
draw_surface_general(id,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha)
Keterangannya dapat dilihat di helpfile.
Notes:
- Gunakan draw_clear_alpha(0,0) untuk clear surface, draw_clear(0) hanya membuat surface menjadi hitam solid
- Surface tidak bekerja secara baik dalam 3D mode
- Selalu cek keberadaan surface dengan surface_exists if necessary, surface dapat sewaktu-waktu rusak/hilang karena disimpan dalam texture memory dan/atau dengan faktor-faktor tertentu (selengkapnya baca di helpfile)
Contoh:
Pada contoh berikut proses drawing akan mempengaruhi performance (menyebabkan lag) jika didraw langsung ke layar (works well in GM legacy).
Create event
Draw event
Sekian, contoh tersebut hanya menggunakan fungsi2 surface yg esensial, fungsi2 yg lain silakan dicoba sendiri
Contoh simplenya adalah pada aplikasi painting, di mana pengguna menggambar pada surface yang tidak akan hilang tiap saat yang kemudian akan didraw lagi ke layar. Dari contoh tersebut keuntungan penggunaan surface adalah efisiensi penggambaran objek secara statik/diam yang membutuhkan beban komputasi (mis. text, sprite yg banyak, tiled texture, dsb).
Berikut fungsi-fungsi untuk surface.
surface_create(w,h)
w,h = lebar dan tinggi surface yang akan dicreate
Return: nilai id surface
surface_create_ext(name, w, h) <Studio only, HTML5 module>
name = nama elemen canvas HTML5 yang ditautkan pada surface
surface_free(id)
Mendealokasi memory yang digunakan oleh surface
surface_exists(id)
Apakah surface id exist
surface_get_width(id), surface_get_height(id)
Lebar dan tinggi surface
surface_get_texture(id)
Texture yang berkorespondensi dengan surface, dapat digunakan untuk menggambar object bertexture dengan surface
surface_set_target(id)
Set target ke surface untuk didraw
surface_reset_target(id)
Set kembali target ke layar untuk didraw
surface_getpixel(id,x,y)
Warna pixel pada (x,y). Proses ini tidak begitu cepat, so use with care.
surface_save_part(id,fname,x,y,w,h)
Save bagian (x,y,w,h) dari surface dalam file png
surface_copy(destination,x,y,source)
Copy surface ke surface tujuan pada (x,y), no alpha blending
surface_copy_part(destination,x,y,source,xs,ys,ws,hs)
Copy bagian surface ke surface tujuan pada (x,y), no alpha blending
Berikut fungsi-fungsi untuk menggambar surface.
draw_surface(id,x,y)
draw_surface_stretched(id,x,y,w,h)
draw_surface_tiled(id,x,y)
draw_surface_part(id,left,top,width,height,x,y)
draw_surface_ext(id,x,y,xscale,yscale,rot,color,alpha)
draw_surface_stretched_ext(id,x,y,w,h,color,alpha)
draw_surface_tiled_ext(id,x,y,xscale,yscale,color,alpha)
draw_surface_part_ext(id,left,top,width,height,x,y,xscale,yscale,color,alpha)
draw_surface_general(id,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha)
Keterangannya dapat dilihat di helpfile.
Notes:
- Gunakan draw_clear_alpha(0,0) untuk clear surface, draw_clear(0) hanya membuat surface menjadi hitam solid
- Surface tidak bekerja secara baik dalam 3D mode
- Selalu cek keberadaan surface dengan surface_exists if necessary, surface dapat sewaktu-waktu rusak/hilang karena disimpan dalam texture memory dan/atau dengan faktor-faktor tertentu (selengkapnya baca di helpfile)
Contoh:
Pada contoh berikut proses drawing akan mempengaruhi performance (menyebabkan lag) jika didraw langsung ke layar (works well in GM legacy).
Create event
- Code:
surf = surface_create(600,400)
surface_set_target(surf)
for(i=0;i<80;i+=1){
for(j=0;j<120;j+=1){
draw_text(j*5,i*5,8)
}
}
surface_reset_target()
Draw event
- Code:
draw_surface(surf,10,10)
Sekian, contoh tersebut hanya menggunakan fungsi2 surface yg esensial, fungsi2 yg lain silakan dicoba sendiri
Asuna- Global Moderator
-
Jumlah posting : 1711
Points : 1901
Join date : 10.01.13
Re: [Intermediate] Drawing Surfaces
Cool bro c:
thanks
thanks
Zihad Rizky Edwin Fikri- GM Beginner
-
Jumlah posting : 409
Points : 431
Join date : 12.05.13
Age : 26
Lokasi : jaktim
Re: [Intermediate] Drawing Surfaces
nice asuna
ada yang pernah coba draw surface di DrawGUI? mestinya sih bisa (mestinya lho)
ada yang pernah coba draw surface di DrawGUI? mestinya sih bisa (mestinya lho)
Re: [Intermediate] Drawing Surfaces
Makasih udah ditulis! xD
...
Aku mau makai surface di gameku untuk manipulasi proyeksi 3D. Sayangnya sekarang di GM:S screen_redraw() dan screen_resfresh() udah obsolete. Jadi susah.
...
Aku mau makai surface di gameku untuk manipulasi proyeksi 3D. Sayangnya sekarang di GM:S screen_redraw() dan screen_resfresh() udah obsolete. Jadi susah.
Re: [Intermediate] Drawing Surfaces
meliaz99 wrote:Makasih udah ditulis! xD
...
Aku mau makai surface di gameku untuk manipulasi proyeksi 3D. Sayangnya sekarang di GM:S screen_redraw() dan screen_resfresh() udah obsolete. :(Jadi susah.
jadi setelah diprojeksi terus di proses, gitu kan? mungkin mau di blur ato gimana
emang kalau ga pake screen_redraw kenapa? pakai draw_surface aja langsung
dan kalau post processing gitu juga mestinya (mestinya lho) pakai drawGUI gpp, karena kan screen ga berubah2
Re: [Intermediate] Drawing Surfaces
thanks mastah
boygud- Newbie
-
Jumlah posting : 11
Points : 9
Join date : 01.02.14
Re: [Intermediate] Drawing Surfaces
wiih, ak jarang banget pke surface nih tutor bakal brmanfaat bnget buat ak
thx for share
thx for share
Similar topics
» [Beginner-Intermediate] String
» [Intermediate] Ds_list
» [Intermediate] ds_map
» [Intermediate] File Bin
» [Intermediate] Ds_stack
» [Intermediate] Ds_list
» [Intermediate] ds_map
» [Intermediate] File Bin
» [Intermediate] Ds_stack
Halaman 1 dari 1
Permissions in this forum:
Anda tidak dapat menjawab topik