摘要: 我们使用15节学到的知识来绘制14节的立方体。 在第14节我们使用了两次glDrawElements实现了OpenGL实例化,发现这样仍然不太方便,如果需要绘制成千上万的立方体,就需要手写成千上万次的glDrawElements(). 而15节我们知道了glDrawElementsInstanced 阅读全文
posted @ 2018-01-29 17:01 Ken_An 阅读(714) 评论(0) 推荐(0) 编辑
摘要: 友情提示:继续本节之前,需要保存此前的代码,本节为了试验,会对代码做一些修改,但后续的修改需要我们把代码返回之前的进度。 OpenGL内置支持Instancing,有专门的函数来处理这件事情。 为了方便,我们先使用最简单的三角形来学习 先修改sendDataToOpenGL()函数: 相应的修改ve 阅读全文
posted @ 2018-01-29 15:58 Ken_An 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 如果我们需要绘制两个(或者多个)一样的立方体(或者物体),只是位置、缩放、旋转不一样,那么我们可以不需要多次将这个物体的顶点信息、颜色信息等发送到显卡,而是发送一次,绘制多次,仅仅是每次绘制之前应用不同的转换矩阵。这种方法叫做OpenGL Instancing。它的效率比每次都重新发送一次数据到显卡 阅读全文
posted @ 2018-01-29 11:21 Ken_An 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 上节说过矩阵是可以结合的,而且相乘是按照和应用顺序相反的顺序进行的。我们之前初始化translationMatrix和rotationMatrix的时候,第一个参数都是使用的一个初始矩阵 glm::matrix4(),实际上我们可以对代码稍作优化,让初始化过程精简一些。 对比一下优化之前和优化之后的 阅读全文
posted @ 2018-01-29 09:26 Ken_An 阅读(159) 评论(0) 推荐(0) 编辑