graphics: Move context.resume() to internal/graphics

This commit is contained in:
Hajime Hoshi 2016-07-03 21:42:01 +09:00
parent 146c1e5846
commit 6e76c3ed6b
2 changed files with 14 additions and 13 deletions

View File

@ -84,8 +84,6 @@ func (c *graphicsContext) needsRestoring(context *opengl.Context) (bool, error)
} }
func (c *graphicsContext) initializeIfNeeded(context *opengl.Context) error { func (c *graphicsContext) initializeIfNeeded(context *opengl.Context) error {
// glViewport must be called at every frame on iOS
context.ResetViewportSize()
if !c.initialized { if !c.initialized {
if err := graphics.Initialize(context); err != nil { if err := graphics.Initialize(context); err != nil {
return err return err
@ -136,6 +134,8 @@ func (c *graphicsContext) drawToDefaultRenderTarget(context *opengl.Context) err
} }
func (c *graphicsContext) UpdateAndDraw(context *opengl.Context, updateCount int) error { func (c *graphicsContext) UpdateAndDraw(context *opengl.Context, updateCount int) error {
// glViewport must be called at every frame on iOS
context.ResetViewportSize()
if err := c.initializeIfNeeded(context); err != nil { if err := c.initializeIfNeeded(context); err != nil {
return err return err
} }
@ -170,7 +170,6 @@ func (c *graphicsContext) UpdateAndDraw(context *opengl.Context, updateCount int
func (c *graphicsContext) restore(context *opengl.Context) error { func (c *graphicsContext) restore(context *opengl.Context) error {
imageM.Lock() imageM.Lock()
defer imageM.Unlock() defer imageM.Unlock()
context.Resume()
if err := graphics.Initialize(context); err != nil { if err := graphics.Initialize(context); err != nil {
return err return err
} }

View File

@ -49,11 +49,13 @@ const (
float32Size = 4 float32Size = 4
) )
func Initialize(c *opengl.Context) error { func Initialize(context *opengl.Context) error {
return theOpenGLState.initialize(c) return theOpenGLState.initialize(context)
} }
func (s *openGLState) initialize(c *opengl.Context) error { func (s *openGLState) initialize(context *opengl.Context) error {
// TODO: Rename
context.Resume()
s.lastProgram = zeroProgram s.lastProgram = zeroProgram
s.lastProjectionMatrix = nil s.lastProjectionMatrix = nil
s.lastModelviewMatrix = nil s.lastModelviewMatrix = nil
@ -61,19 +63,19 @@ func (s *openGLState) initialize(c *opengl.Context) error {
s.lastColorMatrixTranslation = nil s.lastColorMatrixTranslation = nil
s.lastTexture = zeroTexture s.lastTexture = zeroTexture
shaderVertexModelviewNative, err := c.NewShader(opengl.VertexShader, shader(c, shaderVertexModelview)) shaderVertexModelviewNative, err := context.NewShader(opengl.VertexShader, shader(context, shaderVertexModelview))
if err != nil { if err != nil {
panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err)) panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err))
} }
defer c.DeleteShader(shaderVertexModelviewNative) defer context.DeleteShader(shaderVertexModelviewNative)
shaderFragmentTextureNative, err := c.NewShader(opengl.FragmentShader, shader(c, shaderFragmentTexture)) shaderFragmentTextureNative, err := context.NewShader(opengl.FragmentShader, shader(context, shaderFragmentTexture))
if err != nil { if err != nil {
panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err)) panic(fmt.Sprintf("graphics: shader compiling error:\n%s", err))
} }
defer c.DeleteShader(shaderFragmentTextureNative) defer context.DeleteShader(shaderFragmentTextureNative)
s.programTexture, err = c.NewProgram([]opengl.Shader{ s.programTexture, err = context.NewProgram([]opengl.Shader{
shaderVertexModelviewNative, shaderVertexModelviewNative,
shaderFragmentTextureNative, shaderFragmentTextureNative,
}) })
@ -82,7 +84,7 @@ func (s *openGLState) initialize(c *opengl.Context) error {
} }
const stride = 8 // (2 [vertices] + 2 [texels]) * 2 [sizeof(int16)/bytes] const stride = 8 // (2 [vertices] + 2 [texels]) * 2 [sizeof(int16)/bytes]
c.NewBuffer(opengl.ArrayBuffer, 4*stride*MaxQuads, opengl.DynamicDraw) context.NewBuffer(opengl.ArrayBuffer, 4*stride*MaxQuads, opengl.DynamicDraw)
indices := make([]uint16, 6*MaxQuads) indices := make([]uint16, 6*MaxQuads)
for i := uint16(0); i < MaxQuads; i++ { for i := uint16(0); i < MaxQuads; i++ {
@ -93,7 +95,7 @@ func (s *openGLState) initialize(c *opengl.Context) error {
indices[6*i+4] = 4*i + 2 indices[6*i+4] = 4*i + 2
indices[6*i+5] = 4*i + 3 indices[6*i+5] = 4*i + 3
} }
s.indexBufferQuads = c.NewBuffer(opengl.ElementArrayBuffer, indices, opengl.StaticDraw) s.indexBufferQuads = context.NewBuffer(opengl.ElementArrayBuffer, indices, opengl.StaticDraw)
return nil return nil
} }