我正在尝试使用现代 OpenGL 和着色器,而不是到目前为止我一直在使用的即时模式。我最近了解了 VBO 和 VAO,我仍在努力了解它们,但我知道 VBO 需要一组作为顶点的浮点数,然后将其传递给 GPU 等
使用 VBO 绘制多个对象(都相同)但位置不同的最佳方法是什么。我是否必须绘制一个,然后修改预先传入的数组,然后再次绘制它并修改并绘制和修改等等......每一帧屏幕中的所有块?或者,还有更好的方法?
我正在努力实现这一目标:http : //imgur.com/cBgJ0sK
感谢任何帮助 - 当我可以学习更现代的方式时,我不想学习坏的(已弃用的,旧的)即时模式习惯!
小智 3
您不应该修改程序中的顶点,这应该在着色器中完成。为此,您将创建一个表示变换的矩阵,并将在顶点着色器中使用该矩阵。
主要思想是:
您创建一个 VAO 来保存 VBO 的信息(顶点、法线、纹理坐标、切线信息等)
然后,对于每个不同的对象,您生成一个模型矩阵,其中包含位置、方向和比例(以及其他齐次变换)的信息,并将其发送到着色器以进行变换。
这个想法是,您只需绑定 VAO 一次,然后绘制所有不同的对象,只需发送更改的信息(模型矩阵,可能是纹理)并绘制对象。
要了解如何使用模型矩阵,请阅读如下教程: http://ogldev.atspace.co.uk/www/tutorial06/tutorial06.html
还有更好的方法可以做到这一点,但您可以从这里开始。
对您的案例有好处的其他信息是使用实例。 http://ogldev.atspace.co.uk/www/tutorial33/tutorial33.html
稍后,您可以继续进行间接绘制以获得更好的性能。之后...
归档时间: |
|
查看次数: |
2921 次 |
最近记录: |