graphicscommand: Remove Texture

This commit is contained in:
Hajime Hoshi 2018-11-01 03:28:51 +09:00
parent bc3ca38f76
commit e28c7b0f50
4 changed files with 10 additions and 36 deletions

View File

@ -244,7 +244,7 @@ func (c *drawImageCommand) Exec(indexOffsetInBytes int) error {
proj := f.projectionMatrix()
dw, dh := c.dst.Size()
sw, sh := c.src.Size()
opengl.UseProgram(proj, c.src.texture.native, dw, dh, sw, sh, c.color, c.filter)
opengl.UseProgram(proj, c.src.texture, dw, dh, sw, sh, c.color, c.filter)
opengl.GetContext().DrawElements(c.nindices, indexOffsetInBytes)
// glFlush() might be necessary at least on MacBook Pro (a smilar problem at #419),
@ -310,7 +310,7 @@ func (c *replacePixelsCommand) Exec(indexOffsetInBytes int) error {
// glFlush is necessary on Android.
// glTexSubImage2D didn't work without this hack at least on Nexus 5x and NuAns NEO [Reloaded] (#211).
opengl.GetContext().Flush()
opengl.GetContext().BindTexture(c.dst.texture.native)
opengl.GetContext().BindTexture(c.dst.texture)
opengl.GetContext().TexSubImage2D(c.pixels, c.x, c.y, c.width, c.height)
return nil
}
@ -389,8 +389,8 @@ func (c *disposeCommand) Exec(indexOffsetInBytes int) error {
c.target.framebuffer.native != opengl.GetContext().ScreenFramebuffer() {
opengl.GetContext().DeleteFramebuffer(c.target.framebuffer.native)
}
if c.target.texture != nil {
opengl.GetContext().DeleteTexture(c.target.texture.native)
if c.target.texture != *new(opengl.Texture) {
opengl.GetContext().DeleteTexture(c.target.texture)
}
return nil
}
@ -445,13 +445,11 @@ func (c *newImageCommand) Exec(indexOffsetInBytes int) error {
w := emath.NextPowerOf2Int(c.width)
h := emath.NextPowerOf2Int(c.height)
checkSize(w, h)
native, err := opengl.GetContext().NewTexture(w, h)
t, err := opengl.GetContext().NewTexture(w, h)
if err != nil {
return err
}
c.result.texture = &texture{
native: native,
}
c.result.texture = t
return nil
}

View File

@ -27,8 +27,8 @@ type framebuffer struct {
}
// newFramebufferFromTexture creates a framebuffer from the given texture.
func newFramebufferFromTexture(texture *texture, width, height int) (*framebuffer, error) {
native, err := opengl.GetContext().NewFramebuffer(texture.native)
func newFramebufferFromTexture(texture opengl.Texture, width, height int) (*framebuffer, error) {
native, err := opengl.GetContext().NewFramebuffer(texture)
if err != nil {
return nil, err
}

View File

@ -42,7 +42,7 @@ func MaxImageSize() int {
// Image represents an image that is implemented with OpenGL.
type Image struct {
texture *texture
texture opengl.Texture
framebuffer *framebuffer
width int
height int
@ -118,7 +118,7 @@ func (i *Image) ReplacePixels(p []byte, x, y, width, height int) {
}
func (i *Image) IsInvalidated() bool {
return !opengl.GetContext().IsTexture(i.texture.native)
return !opengl.GetContext().IsTexture(i.texture)
}
func (i *Image) createFramebufferIfNeeded() (*framebuffer, error) {

View File

@ -1,24 +0,0 @@
// Copyright 2014 Hajime Hoshi
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package graphicscommand
import (
"github.com/hajimehoshi/ebiten/internal/opengl"
)
// texture represents OpenGL's texture.
type texture struct {
native opengl.Texture
}