zworld/engine/renderapi/cache/shader_cache.go
2024-01-14 22:56:06 +08:00

38 lines
631 B
Go

package cache
import (
"zworld/engine/renderapi/device"
"zworld/engine/renderapi/shader"
)
type ShaderCache T[shader.Ref, shader.T]
func NewShaderCache(dev device.T) ShaderCache {
return New[shader.Ref, shader.T](&shaders{
device: dev,
})
}
type shaders struct {
device device.T
}
func (s *shaders) Name() string {
return "Shaders"
}
func (s *shaders) Instantiate(key shader.Ref, callback func(shader.T)) {
// load shader in a background goroutine
go func() {
shader := key.Load(s.device)
callback(shader)
}()
}
func (s *shaders) Delete(shader shader.T) {
shader.Destroy()
}
func (s *shaders) Destroy() {
}