| 295 | |
| 296 | template <typename T> |
| 297 | Status GlBuffer::MappedRead( |
| 298 | const std::function<Status(absl::Span<const T> d)>& reader) const { |
| 299 | if (bytes_size_ % sizeof(T) != 0) { |
| 300 | return InvalidArgumentError("Buffer is not aligned"); |
| 301 | } |
| 302 | gl_buffer_internal::BufferBinder binder(target_, id_); |
| 303 | gl_buffer_internal::BufferMapper mapper(target_, offset_, bytes_size_, |
| 304 | GL_MAP_READ_BIT); |
| 305 | if (!mapper.data()) { |
| 306 | return GetOpenGlErrors(); |
| 307 | } |
| 308 | return reader(absl::MakeSpan(reinterpret_cast<const T*>(mapper.data()), |
| 309 | bytes_size_ / sizeof(T))); |
| 310 | } |
| 311 | |
| 312 | template <typename T> |
| 313 | Status GlBuffer::MappedWrite( |
nothing calls this directly
no test coverage detected