zworld/engine/render/pass/object_buffer.go
2024-01-14 22:56:06 +08:00

31 lines
576 B
Go

package pass
import (
"zworld/engine/render/uniform"
"zworld/engine/renderapi/descriptor"
)
type ObjectBuffer struct {
buffer []uniform.Object
}
func NewObjectBuffer(capacity int) *ObjectBuffer {
return &ObjectBuffer{
buffer: make([]uniform.Object, 0, capacity),
}
}
func (b *ObjectBuffer) Flush(desc *descriptor.Storage[uniform.Object]) {
desc.SetRange(0, b.buffer)
}
func (b *ObjectBuffer) Reset() {
b.buffer = b.buffer[:0]
}
func (b *ObjectBuffer) Store(light uniform.Object) int {
index := len(b.buffer)
b.buffer = append(b.buffer, light)
return index
}