网格样例

在本章节,我们暂时不使用光照,只简单地将纹理贴在模型上。读者可以从Sketchfab找到自己喜欢的OBJ模型来加载。

在这里,我们加载的模型叫做Chalet Hippolyte Chassande Baroz。我们对它的大小和方向进行了调整:

  • chalet.obj

  • chalet.jpg

这一模型大概由50万面三角形构成。读者也可以使用自己的OBJ模型,但需要确保使用的模型给只包含了一个材质,并且模型的大小为1.5x1.5x1.5。如果使用的模型大于这一尺寸,读者就需要对使用的视图矩阵进行修改。我们新建一个和shaders和textures文件夹同级的models文件夹,用于存放模型文件。

添加两个常量定义我们使用的模型文件路径和纹理文件路径:

const int WIDTH = 800;
const int HEIGHT = 600;

const std::string MODEL_PATH = "models/chalet.obj";
const std::string TEXTURE_PATH = "textures/chalet.jpg";

修改createTextureImage函数使用我们定义的纹理路径常量加载纹理图像:

stbi_uc* pixels = stbi_load(TEXTURE_PATH.c_str(), &texWidth, &texHeight, &texChannels, STBI_rgb_alpha);