take advantage of reentrant Do in graphics primitives
This commit is contained in:
parent
6564597c43
commit
3bc5f0a127
21
graphics.go
21
graphics.go
|
@ -105,15 +105,11 @@ func NewLineColor(parent pixelgl.Doer, c color.Color, a, b Vec, width float64) *
|
||||||
width: width,
|
width: width,
|
||||||
}
|
}
|
||||||
|
|
||||||
var format pixelgl.VertexFormat
|
|
||||||
parent.Do(func(ctx pixelgl.Context) {
|
parent.Do(func(ctx pixelgl.Context) {
|
||||||
format = ctx.Shader().VertexFormat()
|
|
||||||
})
|
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
lc.va, err = pixelgl.NewVertexArray(
|
lc.va, err = pixelgl.NewVertexArray(
|
||||||
parent,
|
parent,
|
||||||
format,
|
ctx.Shader().VertexFormat(),
|
||||||
pixelgl.TriangleStripDrawMode,
|
pixelgl.TriangleStripDrawMode,
|
||||||
pixelgl.DynamicUsage,
|
pixelgl.DynamicUsage,
|
||||||
4,
|
4,
|
||||||
|
@ -121,6 +117,7 @@ func NewLineColor(parent pixelgl.Doer, c color.Color, a, b Vec, width float64) *
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(errors.Wrap(err, "failed to create line"))
|
panic(errors.Wrap(err, "failed to create line"))
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
lc.va.SetVertexAttributeVec4(0, pixelgl.Color, mgl32.Vec4{1, 1, 1, 1})
|
lc.va.SetVertexAttributeVec4(0, pixelgl.Color, mgl32.Vec4{1, 1, 1, 1})
|
||||||
lc.va.SetVertexAttributeVec4(1, pixelgl.Color, mgl32.Vec4{1, 1, 1, 1})
|
lc.va.SetVertexAttributeVec4(1, pixelgl.Color, mgl32.Vec4{1, 1, 1, 1})
|
||||||
|
@ -222,15 +219,11 @@ func NewPolygonColor(parent pixelgl.Doer, c color.Color, points ...Vec) *Polygon
|
||||||
points: points,
|
points: points,
|
||||||
}
|
}
|
||||||
|
|
||||||
var format pixelgl.VertexFormat
|
|
||||||
parent.Do(func(ctx pixelgl.Context) {
|
parent.Do(func(ctx pixelgl.Context) {
|
||||||
format = ctx.Shader().VertexFormat()
|
|
||||||
})
|
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
pc.va, err = pixelgl.NewVertexArray(
|
pc.va, err = pixelgl.NewVertexArray(
|
||||||
parent,
|
parent,
|
||||||
format,
|
ctx.Shader().VertexFormat(),
|
||||||
pixelgl.TriangleFanDrawMode,
|
pixelgl.TriangleFanDrawMode,
|
||||||
pixelgl.DynamicUsage,
|
pixelgl.DynamicUsage,
|
||||||
len(points),
|
len(points),
|
||||||
|
@ -238,6 +231,7 @@ func NewPolygonColor(parent pixelgl.Doer, c color.Color, points ...Vec) *Polygon
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(errors.Wrap(err, "failed to create polygon"))
|
panic(errors.Wrap(err, "failed to create polygon"))
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
for i, p := range points {
|
for i, p := range points {
|
||||||
pc.va.SetVertexAttributeVec2(
|
pc.va.SetVertexAttributeVec2(
|
||||||
|
@ -333,15 +327,11 @@ func NewEllipseColor(parent pixelgl.Doer, c color.Color, radius Vec, fill float6
|
||||||
fill: fill,
|
fill: fill,
|
||||||
}
|
}
|
||||||
|
|
||||||
var format pixelgl.VertexFormat
|
|
||||||
parent.Do(func(ctx pixelgl.Context) {
|
parent.Do(func(ctx pixelgl.Context) {
|
||||||
format = ctx.Shader().VertexFormat()
|
|
||||||
})
|
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
ec.va, err = pixelgl.NewVertexArray(
|
ec.va, err = pixelgl.NewVertexArray(
|
||||||
parent,
|
parent,
|
||||||
format,
|
ctx.Shader().VertexFormat(),
|
||||||
pixelgl.TriangleStripDrawMode,
|
pixelgl.TriangleStripDrawMode,
|
||||||
pixelgl.DynamicUsage,
|
pixelgl.DynamicUsage,
|
||||||
(n+1)*2,
|
(n+1)*2,
|
||||||
|
@ -349,6 +339,7 @@ func NewEllipseColor(parent pixelgl.Doer, c color.Color, radius Vec, fill float6
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(errors.Wrap(err, "failed to create circle"))
|
panic(errors.Wrap(err, "failed to create circle"))
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
|
||||||
for k := 0; k < n+1; k++ {
|
for k := 0; k < n+1; k++ {
|
||||||
i, j := k*2, k*2+1
|
i, j := k*2, k*2+1
|
||||||
|
|
Loading…
Reference in New Issue