原文见这里
第一课:代码配置
第二课:简单画图
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
创建一个顶点数组对象,并将它设为当前对象。当窗口创建成功后(即OpenGL上下文创建后),马上做这一步工作;必须在任何其他OpenGL调用前完成。(VAO)
第三课 MVP矩阵
齐次坐标,MVP矩阵关系,变化,推导
第四课:
OpenGL的缓冲区由一些标准的函数(glGenBuffers, glBindBuffer, glBufferData, glVertexAttribPointer)来创建、绑定、填充和配置;
第五课:纹理立方体
给一个模型贴纹理时,需要通过某种方式告诉OpenGL用哪一块图像来填充三角形。这是借助UV坐标来实现的。将三维坐标映射到uv坐标。就像是将正方形拆开。自己可以决定拆开的方式 每个顶点除了位置坐标外还有两个浮点数坐标:U和V。这两个坐标用于获取纹理。 对应于obj文件的纹理坐标。 为了抗锯齿,需要用最近邻,线性,线性等插值方法。但是所有这些方法在远处看过去可能颜色混合不够。这时候需要mipmap技术
一开始,把图像缩小到原来的1/2,然后依次缩小,直到图像只有1×1大小(应该是图像所有纹素的平均值) 绘制模型时,根据纹素大小选择合适的mipmap。 可以选用nearest、linear、anisotrop