VK
Size: a a a
VK
VK
VK
VK
TG
TG
class Buffer {
GLuint buffer;
protected:
Buffer() {
glGenBuffers(1, &buffer);
}
public:
~Buffer() {
glDeleteBuffers(1, &buffer);
}
Buffer(const Buffer &other) = delete;
Buffer(Buffer &&other) : buffer(other.buffer) {
other.buffer = 0;
}
Buffer& operator=(const Buffer &other) = delete;
Buffer& operator=(Buffer &&other) {
std::swap(buffer, other.buffer);
return *this;
}
operator GLuint() {
return buffer;
}
};
как думаете стоит создать для него конструктор пустого состояния?d
d
AB
d
U
S
VT
S
d
d
d
class IMesh {
public:
struct vertex {
math::vec3 pos;
math::vec3 norm;
math::vec3 tang;
math::vec2 uv;
float reserve;
};
struct mesh_parameters {
std::uint32_t verticesCount;
std::uint32_t elementsCount;
std::uint32_t submeshCount;
};
struct submesh_range {
std::uint32_t start;
std::uint32_t end;
};
virtual mesh_parameters getMeshParameters() = 0;
virtual void loadVerticesRange(vertex* vertexBuffer, std::uint32_t startVertex, std::uint32_t endVertex) = 0;
virtual void loadElementsRange(std::uint32_t* vertexBuffer, std::uint32_t startVertex, std::uint32_t endVertex) = 0;
virtual submesh_range getSubmeshRange(std::uint32_t submeshIndex) = 0;
virtual unsigned getVersion() = 0;
protected:
~IMesh() = default;
};
VT
d
VT