mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-25 11:18:54 +01:00
graphics: Refactoring: Now all Image objects are generated from New* funcs
This commit is contained in:
parent
9f2b53d24c
commit
da0196911d
@ -14,10 +14,6 @@
|
|||||||
|
|
||||||
package ebiten
|
package ebiten
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/hajimehoshi/ebiten/internal/graphics"
|
|
||||||
)
|
|
||||||
|
|
||||||
func newGraphicsContext(screenWidth, screenHeight, screenScale int) (*graphicsContext, error) {
|
func newGraphicsContext(screenWidth, screenHeight, screenScale int) (*graphicsContext, error) {
|
||||||
c := &graphicsContext{}
|
c := &graphicsContext{}
|
||||||
if err := c.setSize(screenWidth, screenHeight, screenScale); err != nil {
|
if err := c.setSize(screenWidth, screenHeight, screenScale); err != nil {
|
||||||
@ -62,33 +58,14 @@ func (c *graphicsContext) setSize(screenWidth, screenHeight, screenScale int) er
|
|||||||
if c.screen != nil {
|
if c.screen != nil {
|
||||||
c.screen.Dispose()
|
c.screen.Dispose()
|
||||||
}
|
}
|
||||||
texture, err := graphics.NewTexture(glContext, screenWidth, screenHeight, glContext.Nearest)
|
screen, err := NewImage(screenWidth, screenHeight, FilterNearest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
screenF, err := graphics.NewFramebufferFromTexture(glContext, texture)
|
c.defaultRenderTarget, err = newImageWithZeroFramebuffer(screenWidth*screenScale, screenHeight*screenScale)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
w, h := screenF.Size()
|
|
||||||
screen := &Image{
|
|
||||||
framebuffer: screenF,
|
|
||||||
texture: texture,
|
|
||||||
width: w,
|
|
||||||
height: h,
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := graphics.NewZeroFramebuffer(glContext, screenWidth*screenScale, screenHeight*screenScale)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
w, h = f.Size()
|
|
||||||
c.defaultRenderTarget = &Image{
|
|
||||||
framebuffer: f,
|
|
||||||
texture: nil,
|
|
||||||
width: w,
|
|
||||||
height: h,
|
|
||||||
}
|
|
||||||
c.defaultRenderTarget.Clear()
|
c.defaultRenderTarget.Clear()
|
||||||
c.screen = screen
|
c.screen = screen
|
||||||
c.screenScale = screenScale
|
c.screenScale = screenScale
|
||||||
|
17
image.go
17
image.go
@ -384,3 +384,20 @@ func NewImageFromImage(img image.Image, filter Filter) (*Image, error) {
|
|||||||
}
|
}
|
||||||
return eimg, nil
|
return eimg, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newImageWithZeroFramebuffer(width, height int) (*Image, error) {
|
||||||
|
imageM.Lock()
|
||||||
|
defer imageM.Unlock()
|
||||||
|
f, err := graphics.NewZeroFramebuffer(glContext, width, height)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
img := &Image{
|
||||||
|
framebuffer: f,
|
||||||
|
texture: nil,
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
}
|
||||||
|
runtime.SetFinalizer(img, (*Image).Dispose)
|
||||||
|
return img, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user