Go SDL2 游戏开发入门6-画几何图形
前言
SDL2 可以在渲染器 renderer 上直接画几何图, 下面我们就来试试吧, 很简单
代码
package main import ( "github.com/veandco/go-sdl2/sdl" ) const ( W = 670 H = 620 ) func main() { sdl.Init(sdl.INIT_EVERYTHING) defer sdl.Quit() window, _ := sdl.CreateWindow("test", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, W, H, sdl.WINDOW_SHOWN) defer window.Destroy() renderer, _ := sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED) defer renderer.Destroy() running := true for running { for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() { switch event.(type) { case *sdl.QuitEvent: println("Quit") running = false break } } renderer.SetDrawColor(128, 128, 128, 255) renderer.Clear() rect := sdl.Rect{W / 4, H / 4, W / 2, H / 2} renderer.SetDrawColor(255, 0, 0, 255) renderer.FillRect(&rect) outline := sdl.Rect{W / 6, H / 6, W * 2 / 3, H * 2 / 3} renderer.SetDrawColor(0, 255, 0, 255) renderer.DrawRect(&outline) renderer.SetDrawColor(0, 0, 255, 255) renderer.DrawLine(0, H/2, W, H/2) renderer.SetDrawColor(255, 255, 0, 255) for i := 0; i < H; i += 4 { renderer.DrawPoint(W/2, int32(i)) } renderer.Present() sdl.Delay(16) } }
- 和之前一样, 还是先创建一个窗口, 在窗口上创建一个渲染器
- 然后在主循环里, 直接调用 renderer 下的方法来画几何图
- 首先renderer.SetDrawColor(128, 128, 128, 255) 设置一下背景颜色
- renderer.Clear() 会把渲染器刷成上一次设置的颜色
- 创建一个矩形 sdl.Rect{W / 4, H / 4, W / 2, H / 2}, 4 个参数分别是坐标 x,y 和长宽 w,h
- 设置一下颜色, 然后 renderer.FillRect 把矩形填充到渲染器上
- 再创建一个矩形 sdl.Rect{W / 6, H / 6, W * 2 / 3, H * 2 / 3}
- 设置颜色, 然后 renderer.DrawRect 把矩形画到渲染器上, 这个和上面的区别就是只会划线不会填充
- renderer.DrawLine 就是直接画一条线, 4 个参数分别是起点和终点的坐标
- renderer.DrawPoint 及时直接画一个点, 2 个参数就是点的坐标
- 最后 renderer.Present 显示出来就好了, 是不是很简单 (^o^)/~