BufferSlice<T0>
структура в UnityEngine.LightTransport
Описание
Представляет типизированное представление в части буфера устройства, обеспечивая эффективное управление памятью и операции с безопасным типом буфера.
С помощью структуры BufferSlice Unity делит одно крупное выделение буфера на буферы поменьше, каждый со своим явным типом. Это обеспечивает эффективное управление памятью: несколько логических буферов используют одно физическое выделение, сохраняя при этом типобезопасность.
BufferSlice обычно используется с:
- IDeviceContext.ReadBuffer и IDeviceContext.WriteBuffer для передачи данных.
- IProbeIntegrator методы для спецификации входно-выходных буферов.
- Эффективное использование памяти при пакетировании связанных структур данных.
Срез поддерживает ссылку на базовый BufferID и указывает смещение, измеряемое в элементах типа T.
// Create a large buffer for multiple data types BufferID sharedBuffer = context.CreateBuffer(1000, sizeof(float));
// Create different views into the same buffer var floatSlice = new BufferSlice<float>(sharedBuffer, 0); // Elements 0-499 var vectorSlice = new BufferSlice<Vector3>(sharedBuffer, 500); // Elements 500-998
// Write data through different slices var floatData = new NativeArray<float>(500, Allocator.Temp); var vectorData = new NativeArray<Vector3>(166, Allocator.Temp);
context.WriteBuffer(floatSlice, floatData); context.WriteBuffer(vectorSlice, vectorData);
Свойства
| Свойство | Описание |
|---|---|
| Id | Буфер ID. |
| Offset | Число элементов, подлежащих смещению, измеряемое от начала буфера. Это значение не должно превышать конец выделения буфера. |
Конструкторы
| Конструктор | Описание |
|---|---|
| BufferSlice_1 | Создаёт новую структуру BufferSlice, задавая смещение от начала буфера. Буфер определяется через BufferID. |
Открытые методы
| Метод | Описание |
|---|---|
| SafeReinterpret | Переинтерпретация слоя как имеющего иной тип данных (типовая путаница), выполнение проверок для обеспечения действительности переинтерпретации. |
| UnsafeReinterpret | Переинтерпретация слоя как имеющего другой тип данных (типовое смешение), но не проверяет, является ли переинтерпретация действительной. |