Refactoring

This commit is contained in:
Hajime Hoshi 2013-11-27 11:56:44 +09:00
parent f76171c79d
commit dc9f682863
2 changed files with 12 additions and 21 deletions

View File

@ -10,32 +10,25 @@ import (
"github.com/hajimehoshi/go-ebiten/graphics/matrix" "github.com/hajimehoshi/go-ebiten/graphics/matrix"
"github.com/hajimehoshi/go-ebiten/graphics/opengl/offscreen" "github.com/hajimehoshi/go-ebiten/graphics/opengl/offscreen"
"github.com/hajimehoshi/go-ebiten/graphics/opengl/texture" "github.com/hajimehoshi/go-ebiten/graphics/opengl/texture"
grendertarget "github.com/hajimehoshi/go-ebiten/graphics/rendertarget"
"image" "image"
"math" "math"
) )
type Context struct { type Context struct {
screenId graphics.RenderTargetId screenId graphics.RenderTargetId
screenWidth int
screenHeight int
screenScale int
ids *ids ids *ids
offscreen *offscreen.Offscreen offscreen *offscreen.Offscreen
} }
func newContext(screenWidth, screenHeight, screenScale int) *Context { func newContext(screenWidth, screenHeight, screenScale int) *Context {
context := &Context{ context := &Context{
screenWidth: screenWidth,
screenHeight: screenHeight,
screenScale: screenScale,
ids: newIds(), ids: newIds(),
offscreen: offscreen.New(screenWidth, screenHeight, screenScale), offscreen: offscreen.New(screenWidth, screenHeight, screenScale),
} }
var err error var err error
context.screenId, err = context.createRenderTarget( context.screenId, err = context.createRenderTarget(
context.screenWidth, context.screenHeight, texture.FilterNearest) screenWidth, screenHeight, texture.FilterNearest)
if err != nil { if err != nil {
panic("initializing the offscreen failed: " + err.Error()) panic("initializing the offscreen failed: " + err.Error())
} }
@ -88,11 +81,7 @@ func (context *Context) ResetOffscreen() {
func (context *Context) SetOffscreen(renderTargetId graphics.RenderTargetId) { func (context *Context) SetOffscreen(renderTargetId graphics.RenderTargetId) {
renderTarget := context.ids.RenderTargetAt(renderTargetId) renderTarget := context.ids.RenderTargetAt(renderTargetId)
context.setOffscreen(renderTarget) context.offscreen.Set(renderTarget)
}
func (context *Context) setOffscreen(rt *grendertarget.RenderTarget) {
context.offscreen.Set(rt)
} }
func (context *Context) setMainFramebufferOffscreen() { func (context *Context) setMainFramebufferOffscreen() {

View File

@ -7,12 +7,14 @@ import (
type Device struct { type Device struct {
context *Context context *Context
screenScale int
} }
func NewDevice(screenWidth, screenHeight, screenScale int) *Device { func NewDevice(screenWidth, screenHeight, screenScale int) *Device {
context := newContext(screenWidth, screenHeight, screenScale) context := newContext(screenWidth, screenHeight, screenScale)
return &Device{ return &Device{
context: context, context: context,
screenScale: screenScale,
} }
} }
@ -28,7 +30,7 @@ func (device *Device) Update(draw func(graphics.Context)) {
context.setMainFramebufferOffscreen() context.setMainFramebufferOffscreen()
context.Clear() context.Clear()
scale := float64(context.screenScale) scale := float64(device.screenScale)
geometryMatrix := matrix.IdentityGeometry() geometryMatrix := matrix.IdentityGeometry()
geometryMatrix.Scale(scale, scale) geometryMatrix.Scale(scale, scale)
context.DrawTexture(context.ToTexture(context.screenId), context.DrawTexture(context.ToTexture(context.screenId),