文章目录
LearnGL - 学习笔记目录
- 如何绘制?
- 先画第一个直角三角形
- 绘制效果
- 再画第二个直角三角形
- 绘制效果
- 查看正面的顺/逆时针
- 使用 索引缓存 EBO/IBO 来节省显存
- 重新计算显存顶点+索引用量
- 索引缓存 EBO/IBO 的创建、绑定、设置数据
- 绘制
- 完整源码
- References
本人才疏学浅,如有什么错误,望不吝指出。
上一篇:LearnGL - 02 - DrawTriangle、LearnGL - 02.1 - DrawTriangle_Extension,学会了如何画一个三角形。
这一篇:画一个 Quad(Quadrilateral) 四边形。
如何绘制?之前已经画了一个三角形了。
那么画四边形就简单多了,两个三角形组合成一个四边形不就好了,如下图:
就是两个直角三角形的组合嘛,那么开始咯。
先画第一个直角三角形先看看之前的文章话的
这个显然不是直角三角,需要调整一下数值。 之前的数值为:
float vertices[] = {
// x, y, z r, g, b
-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f,
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f,
};
调整为:
float vertices[] = {
// x, y, z r, g, b
-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f,
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f,
-0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f,
};
绘制效果
最简单的思维是:直接添加多三个顶点即可。(后面会使用更好的方式)
float vertices[] = {
// x, y, z r, g, b
// 第一个直角三角性
-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f,
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f,
-0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f,
// 第二个直角三角性
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f,
0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f,
-0.5f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f,
};
然后是 glDrawArray 的参数调整为绘制6个顶点:
原来是绘制3个顶点的:
glDrawArrays(GL_TRIANGLES, 0, 3); // 绘制三角图元,从0号顶点,开始绘制3个顶点
调整为绘制6个顶点的:
glDrawArrays(GL_TRIANGLES, 0, 6); // 绘制三角图元,从0个顶点,开始绘制3个顶点
绘制效果
可以通过 glGet 中的 glGetIntegerv
第一个参数使用符号常量:GL_FRONT_FACE
,第二个参数传入返回的指针 GLint*
即可拿到当前正面的设置。
也可以通过 glFrontFace 传入 GL_CW
或是 GL_CCW
来设置正面面向。
//glFrontFace(GL_CW); // 顺时针
//glFrontFace(GL_CCW); // 逆时针(默认的)ClockWise
GLint facing;
glGetIntegerv(GL_FRONT_FACE, &facing); // 获取正面的顺逆时针 : CW(ClockWise - 顺时针), CCW(Counter ClockWise - 逆时针)
std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?