OpenGL学习笔记

【五十七,模型加载-4 网格(Mesh)定义】

2020-01-03  本文已影响0人  Woodlouse

网格

用建模工具构建物体时,通常不会直接使用单个形状来构建一个完整的模型。一般来说,一个模型会由几个子模型组合拼接而成,模型中的这些子模型/形状就是一个网格

一个网格(包含顶点、索引和材质属性)是在OpenGL中绘制的最小单位。一个模型通常包含多个网格。

想要绘制一个模型,我们不会去渲染整个模型,而是去渲染这个模型所包含的所有独立的Mesh。

定义网格

一个网格至少需要:

定义顶点
一个顶点包含三个要素:

结构体定义如下:

struct Vertex
{
    glm::vec3 Position;
    glm::vec3 Normal;
    glm::vec2 TexCoords;
};

定义纹理
纹理需要定义两个属性:

结构体定义如下:

struct Texture
{
    GLuint id;
    String type;
};

定义网格
在定义好顶点纹理的表达后,我们可以定义网格的结构了:

class Mesh
{
Public:
    vector<Vertex> vertices;
    vector<GLuint> indices;
    vector<Texture> textures;
    Mesh(vector<Vertex> vertices, vector<GLuint> indices, vector<Texture> texture);
    Void Draw(Shader shader);

private:
    GLuint VAO, VBO, EBO;
    void setupMesh();
}

在这个类中定义了三个函数:

上一篇 下一篇

猜你喜欢

热点阅读