go-sdl-pong

Форк
0
/
screen.go 
36 строк · 638.0 Байт
1
package base
2

3
import "unsafe"
4

5
type Screen struct {
6
	buffer []byte
7
	Width  int
8
	Height int
9
}
10

11
func NewScreen(width, height int) *Screen {
12
	return &Screen{
13
		buffer: make([]byte, width*height*4),
14
		Width:  width,
15
		Height: height,
16
	}
17
}
18

19
func (s *Screen) SetPixel(x, y int, color Color) {
20
	index := (y*int(s.Width) + x) * 4
21
	if index > s.Width*s.Height*4-4 || index < 0 {
22
		return
23
	}
24
	s.buffer[index+3] = color.R
25
	s.buffer[index+2] = color.G
26
	s.buffer[index+1] = color.B
27
}
28
func (s *Screen) UnsafePointer() unsafe.Pointer {
29
	return unsafe.Pointer(&s.buffer[0])
30
}
31

32
func (s *Screen) Clear() {
33
	for i := range s.buffer {
34
		s.buffer[i] = 0
35
	}
36
}
37

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.