mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-11-10 04:57:26 +01:00
Revert "internal/restorable: remove unnecessary functions and variables around shaders"
This reverts commit 4f3e00ec3a
.
Updates #3083
This commit is contained in:
parent
34639d0028
commit
6453e552f3
@ -408,7 +408,7 @@ func (i *Image) drawTriangles(srcs [graphics.ShaderSrcImageCount]*Image, vertice
|
|||||||
vertices[i+2] += oxf
|
vertices[i+2] += oxf
|
||||||
vertices[i+3] += oyf
|
vertices[i+3] += oyf
|
||||||
}
|
}
|
||||||
if shader.ir.Unit == shaderir.Texels {
|
if shader.ensureShader().Unit() == shaderir.Texels {
|
||||||
sw, sh := srcs[0].backend.restorable.InternalSize()
|
sw, sh := srcs[0].backend.restorable.InternalSize()
|
||||||
swf, shf := float32(sw), float32(sh)
|
swf, shf := float32(sw), float32(sh)
|
||||||
for i := 0; i < n; i += graphics.VertexFloatCount {
|
for i := 0; i < n; i += graphics.VertexFloatCount {
|
||||||
|
@ -75,12 +75,6 @@ func (s *Shader) deallocate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
NearestFilterShader = &Shader{
|
NearestFilterShader = &Shader{shader: restorable.NearestFilterShader}
|
||||||
shader: restorable.NearestFilterShader,
|
LinearFilterShader = &Shader{shader: restorable.LinearFilterShader}
|
||||||
ir: restorable.LinearFilterShaderIR,
|
|
||||||
}
|
|
||||||
LinearFilterShader = &Shader{
|
|
||||||
shader: restorable.LinearFilterShader,
|
|
||||||
ir: restorable.LinearFilterShaderIR,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
@ -23,11 +23,13 @@ import (
|
|||||||
// images is a set of Image objects.
|
// images is a set of Image objects.
|
||||||
type images struct {
|
type images struct {
|
||||||
images map[*Image]struct{}
|
images map[*Image]struct{}
|
||||||
|
shaders map[*Shader]struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// theImages represents the images for the current process.
|
// theImages represents the images for the current process.
|
||||||
var theImages = &images{
|
var theImages = &images{
|
||||||
images: map[*Image]struct{}{},
|
images: map[*Image]struct{}{},
|
||||||
|
shaders: map[*Shader]struct{}{},
|
||||||
}
|
}
|
||||||
|
|
||||||
func SwapBuffers(graphicsDriver graphicsdriver.Graphics) error {
|
func SwapBuffers(graphicsDriver graphicsdriver.Graphics) error {
|
||||||
@ -62,11 +64,19 @@ func (i *images) add(img *Image) {
|
|||||||
i.images[img] = struct{}{}
|
i.images[img] = struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *images) addShader(shader *Shader) {
|
||||||
|
i.shaders[shader] = struct{}{}
|
||||||
|
}
|
||||||
|
|
||||||
// remove removes img from the images.
|
// remove removes img from the images.
|
||||||
func (i *images) remove(img *Image) {
|
func (i *images) remove(img *Image) {
|
||||||
delete(i.images, img)
|
delete(i.images, img)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (i *images) removeShader(shader *Shader) {
|
||||||
|
delete(i.shaders, shader)
|
||||||
|
}
|
||||||
|
|
||||||
var graphicsDriverInitialized bool
|
var graphicsDriverInitialized bool
|
||||||
|
|
||||||
// InitializeGraphicsDriverState initializes the graphics driver state.
|
// InitializeGraphicsDriverState initializes the graphics driver state.
|
||||||
|
@ -27,25 +27,36 @@ import (
|
|||||||
|
|
||||||
type Shader struct {
|
type Shader struct {
|
||||||
shader *graphicscommand.Shader
|
shader *graphicscommand.Shader
|
||||||
|
ir *shaderir.Program
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewShader(ir *shaderir.Program) *Shader {
|
func NewShader(ir *shaderir.Program) *Shader {
|
||||||
s := &Shader{
|
s := &Shader{
|
||||||
shader: graphicscommand.NewShader(ir),
|
shader: graphicscommand.NewShader(ir),
|
||||||
|
ir: ir,
|
||||||
}
|
}
|
||||||
|
theImages.addShader(s)
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Shader) Dispose() {
|
func (s *Shader) Dispose() {
|
||||||
|
theImages.removeShader(s)
|
||||||
s.shader.Dispose()
|
s.shader.Dispose()
|
||||||
s.shader = nil
|
s.shader = nil
|
||||||
|
s.ir = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Shader) restore() {
|
||||||
|
s.shader = graphicscommand.NewShader(s.ir)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Shader) Unit() shaderir.Unit {
|
||||||
|
return s.ir.Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
NearestFilterShader *Shader
|
NearestFilterShader *Shader
|
||||||
NearestFilterShaderIR *shaderir.Program
|
|
||||||
LinearFilterShader *Shader
|
LinearFilterShader *Shader
|
||||||
LinearFilterShaderIR *shaderir.Program
|
|
||||||
clearShader *Shader
|
clearShader *Shader
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -79,9 +90,7 @@ func init() {
|
|||||||
if err := wg.Wait(); err != nil {
|
if err := wg.Wait(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
NearestFilterShaderIR = nearestIR
|
|
||||||
NearestFilterShader = NewShader(nearestIR)
|
NearestFilterShader = NewShader(nearestIR)
|
||||||
LinearFilterShaderIR = linearIR
|
|
||||||
LinearFilterShader = NewShader(linearIR)
|
LinearFilterShader = NewShader(linearIR)
|
||||||
clearShader = NewShader(clearIR)
|
clearShader = NewShader(clearIR)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user