diff --git a/app/internal/d3d11/backend_windows.go b/app/internal/d3d11/backend_windows.go index 4a13ba8d..40ddb503 100644 --- a/app/internal/d3d11/backend_windows.go +++ b/app/internal/d3d11/backend_windows.go @@ -185,6 +185,10 @@ func (d *Device) CreateSwapChain(hwnd windows.Handle) (*SwapChain, error) { return &SwapChain{swchain: d3dswchain, fbo: &Framebuffer{}}, nil } +func (d *Device) BindFramebuffer(fbo *Framebuffer) { + d.ctx.OMSetRenderTargets(fbo.renderTarget, fbo.depthView) +} + func (s *SwapChain) Framebuffer(d *Device) (*Framebuffer, error) { if s.fbo.renderTarget != nil { return s.fbo, nil @@ -816,7 +820,7 @@ func (f *Framebuffer) ReadPixels(src image.Rectangle, pixels []byte) error { func (b *Backend) BindFramebuffer(fbo backend.Framebuffer) { b.fbo = fbo.(*Framebuffer) - b.dev.ctx.OMSetRenderTargets(b.fbo.renderTarget, b.fbo.depthView) + b.dev.BindFramebuffer(b.fbo) } func (f *Framebuffer) Invalidate() { diff --git a/app/internal/window/d3d11_windows.go b/app/internal/window/d3d11_windows.go index 6ce7a497..c3eec57f 100644 --- a/app/internal/window/d3d11_windows.go +++ b/app/internal/window/d3d11_windows.go @@ -11,7 +11,6 @@ type d3d11Context struct { win *window swchain *d3d11.SwapChain fbo *d3d11.Framebuffer - backend backend.Device *d3d11.Device width, height int } @@ -36,13 +35,7 @@ func init() { } func (c *d3d11Context) Backend() (backend.Device, error) { - backend, err := d3d11.NewBackend(c.Device) - if err != nil { - return nil, err - } - c.backend = backend - c.backend.BindFramebuffer(c.fbo) - return backend, nil + return d3d11.NewBackend(c.Device) } func (c *d3d11Context) Present() error { @@ -65,7 +58,7 @@ func (c *d3d11Context) Present() error { func (c *d3d11Context) MakeCurrent() error { _, width, height := c.win.HWND() if c.fbo != nil && width == c.width && height == c.height { - c.backend.BindFramebuffer(c.fbo) + c.BindFramebuffer(c.fbo) return nil } if c.fbo != nil { @@ -82,9 +75,7 @@ func (c *d3d11Context) MakeCurrent() error { return err } c.fbo = fbo - if c.backend != nil { - c.backend.BindFramebuffer(c.fbo) - } + c.BindFramebuffer(c.fbo) return nil }