mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-25 19:28:57 +01:00
Compare commits
4 Commits
47f11a7423
...
d334db8291
Author | SHA1 | Date | |
---|---|---|---|
|
d334db8291 | ||
|
0da99e2c37 | ||
|
9449e0a8a6 | ||
|
d5c6fd174f |
@ -337,24 +337,39 @@ func (i *Image) DrawTriangles(srcs [graphics.ShaderSrcImageCount]*Image, vertice
|
||||
return
|
||||
}
|
||||
|
||||
// Use the fast path when this package is not enabled.
|
||||
if !needsRestoration() || !i.needsRestoration() {
|
||||
var srcImages [graphics.ShaderSrcImageCount]*graphicscommand.Image
|
||||
for i, src := range srcs {
|
||||
if src == nil {
|
||||
continue
|
||||
}
|
||||
srcImages[i] = src.image
|
||||
}
|
||||
i.makeStale(dstRegion)
|
||||
i.image.DrawTriangles(srcImages, vertices, indices, blend, dstRegion, srcRegions, shader.shader, uniforms, fillRule)
|
||||
return
|
||||
}
|
||||
|
||||
// makeStaleIfDependingOnAtRegion is not available here.
|
||||
// This might create cyclic dependency.
|
||||
theImages.makeStaleIfDependingOn(i)
|
||||
|
||||
// TODO: Add tests to confirm this logic.
|
||||
var srcstale bool
|
||||
for _, src := range srcs {
|
||||
var srcImages [graphics.ShaderSrcImageCount]*graphicscommand.Image
|
||||
for i, src := range srcs {
|
||||
if src == nil {
|
||||
continue
|
||||
}
|
||||
srcImages[i] = src.image
|
||||
if src.stale || src.imageType == ImageTypeVolatile {
|
||||
srcstale = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// Even if the image is already stale, call makeStale to extend the stale region.
|
||||
if srcstale || !needsRestoration() || !i.needsRestoration() {
|
||||
if srcstale {
|
||||
i.makeStale(dstRegion)
|
||||
} else if i.stale {
|
||||
var overwrite bool
|
||||
@ -376,14 +391,7 @@ func (i *Image) DrawTriangles(srcs [graphics.ShaderSrcImageCount]*Image, vertice
|
||||
i.appendDrawTrianglesHistory(srcs, vertices, indices, blend, dstRegion, srcRegions, shader, uniforms, fillRule, hint)
|
||||
}
|
||||
|
||||
var imgs [graphics.ShaderSrcImageCount]*graphicscommand.Image
|
||||
for i, src := range srcs {
|
||||
if src == nil {
|
||||
continue
|
||||
}
|
||||
imgs[i] = src.image
|
||||
}
|
||||
i.image.DrawTriangles(imgs, vertices, indices, blend, dstRegion, srcRegions, shader.shader, uniforms, fillRule)
|
||||
i.image.DrawTriangles(srcImages, vertices, indices, blend, dstRegion, srcRegions, shader.shader, uniforms, fillRule)
|
||||
}
|
||||
|
||||
func (i *Image) areStaleRegionsIncludedIn(r image.Rectangle) bool {
|
||||
|
@ -255,6 +255,9 @@ func Measure(text string, face Face, lineSpacingInPixels float64) (width, height
|
||||
// Draw and AppendGlyphs automatically create and cache necessary glyphs, so usually you don't have to call CacheGlyphs explicitly.
|
||||
// If you really care about the performance, CacheGlyphs might be useful.
|
||||
//
|
||||
// CacheGlyphs is pretty heavy since it creates all the possible variations of glyphs.
|
||||
// Call CacheGlyphs only when you really need it.
|
||||
//
|
||||
// CacheGlyphs is concurrent-safe.
|
||||
func CacheGlyphs(text string, face Face) {
|
||||
var x, y float64
|
||||
|
Loading…
Reference in New Issue
Block a user