这一课就要解释一个基本的3D世界"结构",以及如何在这个世界里游走。
lesson9.h
#ifndef LESSON9_H
#define LESSON9_H
#include <QWindow>
#include <QOpenGLFunctions_1_1>
#include <QKeyEvent>
#include <QTextStream>
//三角形本质上是由一些(两个以上)顶点组成的多边形,顶点同时也是我们的最基本的分类单位。
//顶点包含了OpenGL真正感兴趣的数据。我们用3D空间中的坐标值(x,y,z)以及它们的纹理坐标(u,v)来定义三角形的每个顶点。
typedef struct tagVERTEX // 创建Vertex顶点结构
{
float x, y, z; // 3D 坐标
float u, v; // 纹理坐标
} VERTEX; // 命名为VERTEX
//一个sector(区段)包含了一系列的多边形,所以下一个目标就是triangle(我们将只用三角形,这样写代码更容易些)。
typedef struct tagTRIANGLE // 创建Triangle三角形结构
{
VERTEX vertex[3]; // VERTEX矢量数组,大小为3
}TRIANGLE; // 命名为 TRIANGLE
typedef struct tagSECTOR // 创建Sector区段结构
{
int numtriangles; // Sector中的三角形个数
TRIANGLE* triangle; // 指向三角数组的指针
} SECTOR; // 命名为SECTOR
const float piover180 = 0.0174532925f;
class QPainter;
class QOpenGLContext;
class QOpenGLPaintDevice;
class L