42 lines
878 B
V
42 lines
878 B
V
|
module main
|
||
|
|
||
|
import gg
|
||
|
import sokol.gfx
|
||
|
|
||
|
[console]
|
||
|
fn main() {
|
||
|
mut context := gg.new_context(
|
||
|
frame_fn: frame
|
||
|
width: 500
|
||
|
height: 500
|
||
|
)
|
||
|
context.run()
|
||
|
}
|
||
|
|
||
|
fn frame(mut ctx gg.Context) {
|
||
|
ctx.begin()
|
||
|
id := ctx.new_streaming_image(ctx.width, ctx.height, 4, pixel_format: .rgba8)
|
||
|
mut img := ctx.get_cached_image_by_idx(id)
|
||
|
mut bytes := []byte{len: img.width * img.height * 4, cap: img.width * img.height * 4}
|
||
|
for y in 0 .. img.height {
|
||
|
for x in 0 .. img.width {
|
||
|
unsafe {
|
||
|
bytes[(x + img.width * y) * 4] = 100
|
||
|
bytes[(x + img.width * y) * 4 + 1] = 100
|
||
|
bytes[(x + img.width * y) * 4 + 2] = 100
|
||
|
bytes[(x + img.width * y) * 4 + 3] = 255
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
unsafe {
|
||
|
img.update_pixel_data(&bytes[0])
|
||
|
}
|
||
|
ctx.draw_image(0, 0, ctx.width, ctx.height, img)
|
||
|
ctx.remove_cached_image_by_idx(id)
|
||
|
ctx.end()
|
||
|
gfx.destroy_image(img.simg)
|
||
|
unsafe {
|
||
|
free(&bytes[0])
|
||
|
}
|
||
|
}
|