66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
"github.com/veandco/go-sdl2/ttf"
|
|
)
|
|
|
|
var winTitle string = "Text"
|
|
var winWidth, winHeight int32 = 800, 600
|
|
|
|
func run() int {
|
|
var window *sdl.Window
|
|
var font *ttf.Font
|
|
var surface *sdl.Surface
|
|
var solid *sdl.Surface
|
|
var err error
|
|
|
|
sdl.Init(sdl.INIT_VIDEO)
|
|
|
|
if err := ttf.Init(); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Failed to initialize TTF: %s\n", err)
|
|
return 1
|
|
}
|
|
|
|
if window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, winWidth, winHeight, sdl.WINDOW_SHOWN); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
|
|
return 2
|
|
}
|
|
defer window.Destroy()
|
|
|
|
if font, err = ttf.OpenFont("../../assets/test.ttf", 32); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Failed to open font: %s\n", err)
|
|
return 4
|
|
}
|
|
defer font.Close()
|
|
|
|
if solid, err = font.RenderUTF8Solid("Hello, World!", sdl.Color{255, 0, 0, 255}); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Failed to render text: %s\n", err)
|
|
return 5
|
|
}
|
|
defer solid.Free()
|
|
|
|
if surface, err = window.GetSurface(); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Failed to get window surface: %s\n", err)
|
|
return 6
|
|
}
|
|
|
|
if err = solid.Blit(nil, surface, nil); err != nil {
|
|
fmt.Fprintf(os.Stderr, "Failed to put text on window surface: %s\n", err)
|
|
return 7
|
|
}
|
|
|
|
// Show the pixels for a while
|
|
window.UpdateSurface()
|
|
sdl.Delay(3000)
|
|
|
|
return 0
|
|
}
|
|
|
|
func main() {
|
|
os.Exit(run())
|
|
}
|