// 定义用于保存每对象数据的结构体
struct GameObject {
// 变换属性
glm::vec3 position = {0.0f, 0.0f, 0.0f};
glm::vec3 rotation = {0.0f, 0.0f, 0.0f};
glm::vec3 scale = {1.0f, 1.0f, 1.0f};
// 此对象的统一缓冲(每个飞行帧一个)
std::vector<vk::raii::Buffer> uniformBuffers;
std::vector<vk::raii::DeviceMemory> uniformBuffersMemory;
std::vector<void*> uniformBuffersMapped;
// 此对象的描述符集(每个飞行帧一个)
std::vector<vk::raii::DescriptorSet> descriptorSets;
// 基于位置、旋转和缩放计算模型矩阵
glm::mat4 getModelMatrix() const {
glm::mat4 model = glm::mat4(1.0f);
model = glm::translate(model, position);
model = glm::rotate(model, rotation.x, glm::vec3(1.0f, 0.0f, 0.0f));
model = glm::rotate(model, rotation.y, glm::vec3(0.0f, 1.0f, 0.0f));
model = glm::rotate(model, rotation.z, glm::vec3(0.0f, 0.0f, 1.0f));
model = glm::scale(model, scale);
return model;
}
};