顶点数据
我们将顶点数据从顶点着色器代码移动到我们的应用程序的代码中。我们首先包含GLM库的头文件,它提供了我们需要使用的线性代数库:
#include <glm/glm.hpp>
创建一个叫做Vertex的新的结构体类型,我们使用它来定义单个顶点的数据:
struct Vertex {
glm::vec2 pos;
glm::vec3 color;
};
GLM库提供了能够完全兼容GLSL的C++向量类型:
const std::vector<Vertex> vertices = {
{{0.0f, -0.5f}, {1.0f, 0.0f, 0.0f}},
{{0.5f, 0.5f}, {0.0f, 1.0f, 0.0f}},
{{-0.5f, 0.5f}, {0.0f, 0.0f, 1.0f}}
};
现在,我们可以使用Vertex结构体数组来定义我们的顶点数据。这次定义和之前在顶点着色器中进行的略有不同,之前在顶点着色器中,我们将顶点位置和顶点颜色数据定义在了不同的数组中,这次,我们将它们定义在了同一个结构体数组中。这种顶点属性定义方式定义的顶点数据也被叫做交叉顶点属性(interleaving vertex attributes)。