我最近了解到:
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
并不是真的如何完成。我一直在使用opengl-tutorial.org上的教程,它向我介绍了 VBO。现在我将它全部迁移到一个类中并试图完善我的理解。
我的情况与此类似。我了解如何使用矩阵进行旋转,我可以自己完成所有操作,然后将其交给 gl 和朋友。但是我敢肯定那效率要低得多,并且会涉及与显卡的更多通信。该网站上的教程 17 展示了如何旋转事物,它使用:
// Send our transformation to the currently bound shader,
// in the "MVP" uniform
glUniformMatrix4fv(MatrixID, 1, GL_FALSE, &MVP[0][0]);
glUniformMatrix4fv(ModelMatrixID, 1, GL_FALSE, &ModelMatrix[0][0]);
glUniformMatrix4fv(ViewMatrixID, 1, GL_FALSE, &ViewMatrix[0][0]);
旋转对象。我认为这比我能生产的任何东西都更有效率。我想做的是做这样的事情,但只将矩阵乘以一些网格,而不将网格分成几块(因为这会破坏三角形-顶点-索引关系,我最终会手动将它缝合在一起)。
有单独的功能吗?是否有一些更高级别的库来处理我应该使用的网格和骨骼(正如对其他人的一些回复似乎暗示的那样)?我不想再次陷入使用过时和低效的东西,只是为了以后再次重做所有事情。