ebiten: bug fix: SubImage+At didn't consider the original image's setVerticesCache

Close #2428
This commit is contained in:
Hajime Hoshi 2022-11-02 12:33:06 +09:00
parent b983014e95
commit aecbf2344d
2 changed files with 15 additions and 0 deletions

View File

@ -858,6 +858,9 @@ func (i *Image) at(x, y int) (r, g, b, a byte) {
return 0, 0, 0, 0
}
x, y = i.adjustPosition(x, y)
if i.isSubImage() {
i = i.original
}
if c, ok := i.setVerticesCache[[2]int{x, y}]; ok {
return c[0], c[1], c[2], c[3]
}

View File

@ -3433,3 +3433,15 @@ func TestImageTooManyConstantBuffersInDirectX(t *testing.T) {
t.Errorf("got: %v, want: %v", got, want)
}
}
// Issue #2428
func TestImageSetAndSubImage(t *testing.T) {
const w, h = 16, 16
img := ebiten.NewImage(w, h)
img.Set(1, 1, color.RGBA{0xff, 0, 0, 0xff})
got := img.SubImage(image.Rect(0, 0, w, h)).At(1, 1).(color.RGBA)
want := color.RGBA{0xff, 0, 0, 0xff}
if got != want {
t.Errorf("got: %v, want: %v", got, want)
}
}