Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
VertexBuffer.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "Buffer.h"
7#include "VertexFormat.h"
8#include <math/math.hpp>
9#include <memory>
10#include <vector>
11
16{
17public:
25 template <typename T>
26 [[nodiscard]] static std::shared_ptr<VertexBuffer> create(const std::vector<T>& data, const VertexFormat& fmt,
27 Buffer::Usage usage = Buffer::Usage::Static);
28
38 [[nodiscard]] static std::shared_ptr<VertexBuffer> create(const void* data, size_t size, const VertexFormat& fmt,
39 Buffer::Usage usage = Buffer::Usage::Static);
40
44 [[nodiscard]] size_t get_size() const;
45
49 [[nodiscard]] uint32_t get_count() const;
50
54 [[nodiscard]] const VertexFormat& get_format() const;
55
56 virtual Buffer& get_buffer() = 0;
57
58protected:
59 VertexBuffer(const void* data, size_t size, const VertexFormat& layout);
60
61private:
62 size_t size_;
63 uint32_t count_;
64 VertexFormat format_;
65};
66
67template <typename T>
68inline std::shared_ptr<VertexBuffer> VertexBuffer::create(const std::vector<T>& data, const VertexFormat& fmt,
69 Buffer::Usage usage)
70{
71 return create(data.data(), data.size() * sizeof(T), fmt, usage);
72}
缓冲区.
Definition: Buffer.h:13
Usage
缓冲区使用方式.
Definition: Buffer.h:29
顶点缓冲区.
Definition: VertexBuffer.h:16
size_t get_size() const
获取缓冲区大小, 单位: 字节.
Definition: VertexBuffer.cpp:27
const VertexFormat & get_format() const
获取顶格式.
Definition: VertexBuffer.cpp:37
static std::shared_ptr< VertexBuffer > create(const std::vector< T > &data, const VertexFormat &fmt, Buffer::Usage usage=Buffer::Usage::Static)
创建 VertexBuffer.
Definition: VertexBuffer.h:68
uint32_t get_count() const
获取顶点数.
Definition: VertexBuffer.cpp:32
顶点格式布局.
Definition: VertexFormat.h:15