31 lines
576 B
Go
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
|
|
}
|