go-sdl-pong
36 строк · 638.0 Байт
1package base
2
3import "unsafe"
4
5type Screen struct {
6buffer []byte
7Width int
8Height int
9}
10
11func NewScreen(width, height int) *Screen {
12return &Screen{
13buffer: make([]byte, width*height*4),
14Width: width,
15Height: height,
16}
17}
18
19func (s *Screen) SetPixel(x, y int, color Color) {
20index := (y*int(s.Width) + x) * 4
21if index > s.Width*s.Height*4-4 || index < 0 {
22return
23}
24s.buffer[index+3] = color.R
25s.buffer[index+2] = color.G
26s.buffer[index+1] = color.B
27}
28func (s *Screen) UnsafePointer() unsafe.Pointer {
29return unsafe.Pointer(&s.buffer[0])
30}
31
32func (s *Screen) Clear() {
33for i := range s.buffer {
34s.buffer[i] = 0
35}
36}
37