Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "image"
- "image/png"
- "log"
- "os"
- "time"
- "unsafe"
- "github.com/veandco/go-sdl2/sdl"
- )
- func main() {
- sdl.Init(sdl.INIT_EVERYTHING)
- window, render, err := sdl.CreateWindowAndRenderer(1024, 768, sdl.WINDOW_SHOWN)
- if err != nil {
- log.Fatal(err)
- }
- f, err := os.Open("rocket.png")
- if err != nil {
- log.Fatal(err)
- }
- img, err := png.Decode(f)
- if err != nil {
- log.Fatal(err)
- }
- ir, ok := img.(*image.RGBA)
- if !ok {
- log.Fatal("Not RGBA")
- }
- width := int32(ir.Bounds().Dx())
- height := int32(ir.Bounds().Dy())
- surf, err := sdl.CreateRGBSurfaceWithFormatFrom(
- unsafe.Pointer(&ir.Pix[0]),
- width,
- height,
- 32,
- int32(ir.Bounds().Dx()*4),
- // this has confused me in the past, must be ABGR, at least on Intel 64 bit
- sdl.PIXELFORMAT_ABGR8888,
- )
- if err != nil {
- log.Fatal(err)
- }
- tex, err := render.CreateTextureFromSurface(surf)
- if err != nil {
- log.Fatal(err)
- }
- t := time.Tick(16 * time.Millisecond)
- window.Show()
- y := 768 - height/2
- for {
- <-t
- render.Copy(
- tex,
- &sdl.Rect{0, 0, width, height},
- &sdl.Rect{1024/2, y, width/2, height/2},
- )
- y = y - 5
- if y <= 0-height/2 {
- return
- }
- render.Present()
- }
- }
Add Comment
Please, Sign In to add comment