Skip to content

Commit aebc217

Browse files
committed
Refactor video gfx
1 parent 70b4455 commit aebc217

1 file changed

Lines changed: 17 additions & 64 deletions

File tree

video/gfx.go

Lines changed: 17 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -28,51 +28,37 @@ func XYWHTo4points(x, y, w, h, fbh float32) (x1, y1, x2, y2, x3, y3, x4, y4 floa
2828

2929
// DrawImage draws an image with x, y, w, h
3030
func (video *Video) DrawImage(image uint32, x, y, w, h float32, scale float32, c Color) {
31-
_, fbh := video.Window.GetFramebufferSize()
32-
ffbh := float32(fbh)
33-
34-
w *= scale
35-
h *= scale
36-
37-
x1, y1, x2, y2, x3, y3, x4, y4 := XYWHTo4points(x, y, w, h, ffbh)
38-
39-
video.drawTextureQuad(image, x1, y1, x2, y2, x3, y3, x4, y4, c)
40-
}
41-
42-
// DrawQuad draws a colored quad
43-
func (video *Video) DrawQuad(x1, y1, x2, y2, x3, y3, x4, y4 float32, c Color) {
44-
video.drawTextureQuad(video.white, x1, y1, x2, y2, x3, y3, x4, y4, c)
31+
video.drawTexturedQuad(image, x, y, w, h, scale, c)
4532
}
4633

4734
// DrawRect draws a colored rectangle
4835
func (video *Video) DrawRect(x, y, w, h float32, scale float32, c Color) {
49-
_, fbh := video.Window.GetFramebufferSize()
50-
ffbh := float32(fbh)
51-
52-
w *= scale
53-
h *= scale
54-
55-
x1, y1, x2, y2, x3, y3, x4, y4 := XYWHTo4points(x, y, w, h, ffbh)
56-
57-
video.drawTextureQuad(video.white, x1, y1, x2, y2, x3, y3, x4, y4, c)
36+
video.drawTexturedQuad(video.white, x, y, w, h, scale, c)
5837
}
5938

60-
// DrawBorder draws a colored rectangle border
61-
func (video *Video) DrawBorder(x, y, w, h float32, borderWidth float32, c Color) {
62-
39+
func (video *Video) vertexArray(x, y, w, h, scale float32) []float32 {
6340
fbw, fbh := video.Window.GetFramebufferSize()
6441
ffbw := float32(fbw)
6542
ffbh := float32(fbh)
6643

44+
w *= scale
45+
h *= scale
46+
6747
x1, y1, x2, y2, x3, y3, x4, y4 := XYWHTo4points(x, y, w, h, ffbh)
6848

69-
var va = []float32{
49+
return []float32{
7050
// X, Y, U, V
7151
x1/ffbw*2 - 1, y1/ffbh*2 - 1, 0, 1, // left-bottom
7252
x2/ffbw*2 - 1, y2/ffbh*2 - 1, 0, 0, // left-top
7353
x3/ffbw*2 - 1, y3/ffbh*2 - 1, 1, 1, // right-bottom
7454
x4/ffbw*2 - 1, y4/ffbh*2 - 1, 1, 0, // right-top
7555
}
56+
}
57+
58+
// DrawBorder draws a colored rectangle border
59+
func (video *Video) DrawBorder(x, y, w, h, borderWidth float32, c Color) {
60+
61+
va := video.vertexArray(x, y, w, h, 1.0)
7662

7763
gl.UseProgram(video.borderProgram)
7864
gl.Uniform1f(gl.GetUniformLocation(video.borderProgram, gl.Str("border_width\x00")), borderWidth)
@@ -90,18 +76,9 @@ func (video *Video) DrawBorder(x, y, w, h float32, borderWidth float32, c Color)
9076
}
9177

9278
// Draw a texture on a polygon
93-
func (video *Video) drawTextureQuad(image uint32, x1, y1, x2, y2, x3, y3, x4, y4 float32, c Color) {
94-
fbw, fbh := video.Window.GetFramebufferSize()
95-
ffbw := float32(fbw)
96-
ffbh := float32(fbh)
79+
func (video *Video) drawTexturedQuad(image uint32, x, y, w, h, scale float32, c Color) {
9780

98-
var va = []float32{
99-
// X, Y, U, V
100-
x1/ffbw*2 - 1, y1/ffbh*2 - 1, 0, 1, // left-bottom
101-
x2/ffbw*2 - 1, y2/ffbh*2 - 1, 0, 0, // left-top
102-
x3/ffbw*2 - 1, y3/ffbh*2 - 1, 1, 1, // right-bottom
103-
x4/ffbw*2 - 1, y4/ffbh*2 - 1, 1, 0, // right-top
104-
}
81+
va := video.vertexArray(x, y, w, h, scale)
10582

10683
gl.UseProgram(video.demulProgram)
10784
maskUniform := gl.GetUniformLocation(video.demulProgram, gl.Str("mask\x00"))
@@ -124,19 +101,7 @@ func (video *Video) drawTextureQuad(image uint32, x1, y1, x2, y2, x3, y3, x4, y4
124101
// DrawRoundedRect draws a rectangle with rounded corners
125102
func (video *Video) DrawRoundedRect(x, y, w, h, r float32, c Color) {
126103

127-
fbw, fbh := video.Window.GetFramebufferSize()
128-
ffbw := float32(fbw)
129-
ffbh := float32(fbh)
130-
131-
x1, y1, x2, y2, x3, y3, x4, y4 := XYWHTo4points(x, y, w, h, ffbh)
132-
133-
var va = []float32{
134-
// X, Y, U, V
135-
x1/ffbw*2 - 1, y1/ffbh*2 - 1, 0, 1, // left-bottom
136-
x2/ffbw*2 - 1, y2/ffbh*2 - 1, 0, 0, // left-top
137-
x3/ffbw*2 - 1, y3/ffbh*2 - 1, 1, 1, // right-bottom
138-
x4/ffbw*2 - 1, y4/ffbh*2 - 1, 1, 0, // right-top
139-
}
104+
va := video.vertexArray(x, y, w, h, 1.0)
140105

141106
gl.UseProgram(video.roundedProgram)
142107
gl.Uniform4f(gl.GetUniformLocation(video.roundedProgram, gl.Str("color\x00")), c.R, c.G, c.B, c.A)
@@ -156,19 +121,7 @@ func (video *Video) DrawRoundedRect(x, y, w, h, r float32, c Color) {
156121
// DrawCircle draws a circle
157122
func (video *Video) DrawCircle(x, y, r float32, c Color) {
158123

159-
fbw, fbh := video.Window.GetFramebufferSize()
160-
ffbw := float32(fbw)
161-
ffbh := float32(fbh)
162-
163-
x1, y1, x2, y2, x3, y3, x4, y4 := XYWHTo4points(x-r, y-r, r*2, r*2, ffbh)
164-
165-
var va = []float32{
166-
// X, Y, U, V
167-
x1/ffbw*2 - 1, y1/ffbh*2 - 1, 0, 1, // left-bottom
168-
x2/ffbw*2 - 1, y2/ffbh*2 - 1, 0, 0, // left-top
169-
x3/ffbw*2 - 1, y3/ffbh*2 - 1, 1, 1, // right-bottom
170-
x4/ffbw*2 - 1, y4/ffbh*2 - 1, 1, 0, // right-top
171-
}
124+
va := video.vertexArray(x, y, r*2, r*2, 1.0)
172125

173126
gl.UseProgram(video.circleProgram)
174127
gl.Uniform4f(gl.GetUniformLocation(video.circleProgram, gl.Str("color\x00")), c.R, c.G, c.B, c.A)

0 commit comments

Comments
 (0)