在这一课里,将学会如何将纹理映射到立方体的六个面。
学习texture map纹理映射(贴图)有很多好处。比方说您想让一颗导弹飞过屏幕。根据前几课的知识,我们最可行的办法可能是很多个多边形来构建导弹的轮廓并加上有趣的颜色。使用纹理映射,您可以使用真实的导弹图像并让它飞过屏幕。您觉得哪个更好看?照片还是一大堆三角形和四边形?使用纹理映射的好处还不止是更好看,而且您的程序运行会更快。导弹贴图可能只是一个飞过窗口的四边形。一个由多边形构建而来的导弹却很可能包括成百上千的多边形。很显然,贴图极大的节省了CPU时间。
需要注意的是,用作纹理的图像的宽和高必须是2的n次方;宽度和高度最小必须是64象素;并且出于兼容性的原因,图像的宽度和高度不应超过256象素。
如果您的原始素材的宽度和高度不是64,128,256象素的话,使用图像处理软件重新改变图像的大小。
可以肯定有办法能绕过这些限制,但现在我们只需要用标准的纹理尺寸。
关于纹理映射,更详细的讲解可参考:https://blog.youkuaiyun.com/caoshangpa/article/details/80318959
这一课的代码较之前有了较大变化,全部贴出来。
lesson5.h
#ifndef LESSON5_H
#define LESSON5_H
#include <QWindow>
#include <QOpenGLFunctions_1_1>
class QPainter;
cl