Opengl es 移动对象Opengl Es 2.0

Opengl es 移动对象Opengl Es 2.0,opengl-es,Opengl Es,我有点困惑,我需要移动我的基本正方形。我应该使用平移矩阵还是仅仅改变对象顶点。哪一个是准确的 我使用顶点着色器 gl_位置=MYPMV矩阵*a_顶点 而且我还使用VBO不要通过更改所有顶点来移动对象!有数千个顶点的复杂模型呢?即使是一个简单的正方形,也不要演变成这样的坏习惯。这正是变换矩阵的用途。您已经在着色器代码中使用了变换矩阵。根据命名,我假设它是一个预乘模型视图投影矩阵。因此,它包括在世界空间中定位对象的模型矩阵(这是您的翻译通常应该进入的位置),在眼睛/相机空间中定位世界的视图矩阵(有时

我有点困惑,我需要移动我的基本正方形。我应该使用平移矩阵还是仅仅改变对象顶点。哪一个是准确的

我使用顶点着色器 gl_位置=MYPMV矩阵*a_顶点


而且我还使用VBO

不要通过更改所有顶点来移动对象!有数千个顶点的复杂模型呢?即使是一个简单的正方形,也不要演变成这样的坏习惯。这正是变换矩阵的用途。您已经在着色器代码中使用了变换矩阵。根据命名,我假设它是一个预乘模型视图投影矩阵。因此,它包括在世界空间中定位对象的模型矩阵(这是您的翻译通常应该进入的位置),在眼睛/相机空间中定位世界的视图矩阵(有时模型和视图矩阵组合成单个模型视图矩阵,如在固定功能GL中)投影矩阵对剪切体积进行任何类型的透视投影和/或变换,三者相乘为P*V*M。如果对这些变换矩阵及其使用还有一些问题,请查阅一些有关3d转换的文献或您最喜欢的OpenGL教程。

从准确性的角度来看,这两种方法都相当好

从性能的角度来看,它是关于最小化瓶颈: 对于单个正方形,您可能无法测量任何差异,但当您想到100万个正方形(或三角形)时,您会觉得变得更复杂:

如果您的所有三角形都改变了相对位置,那么您最好更改vbo,因为您可以将数据直接推送到图形卡的内存中,而不必进行一百万次OpenGl调用(调用速度非常慢)

如果所有三角形彼此保持在相同的位置(就像在普通三维模型中一样),则只需更改变换矩阵即可。在这种情况下,您不必再次将数据推送到gfx内存中,您只有一个函数调用,并且您只需要将几个字节的数据传输到gfx内存中


根据您的应用程序,将三角形划分为不同类别并进行适当更新可能是一个不错的选择。

由于您是新来的,请务必了解“接受”和“向上投票”功能。