我有点困惑,我需要移动我的基本正方形.Should,我使用我的平移矩阵,或者只是改变对象的顶点。哪一个是准确的?
我使用顶点着色器gl_Position = myPMVMatrix * a_vertex;
我也使用VBO
发布于 2011-08-14 19:35:04
从精确度的角度来看,这两种方法都差不多一样好。
从性能的角度来看,这是关于最小化瓶颈:对于单个正方形,您可能无法测量任何差异,但当您考虑100万个正方形(或三角形)时,思考会变得更复杂:
如果所有三角形相对于彼此的位置发生变化,那么更改vbo可能会更好,因为您可以将数据直接推送到显卡的内存中,而不是有一百万次OpenGl调用(这非常慢)。
如果所有的三角形相对于彼此都保持在相同的位置(就像在正常的3D模型中一样),那么您只需更改变换矩阵即可。在这种情况下,您不必将数据再次推送到gfx-memory上,并且只有一个函数调用,并且只向gfx-memory传输了几个字节的数据。
根据您的应用程序,将三角形划分为不同的类别并适当地更新它们可能是一个很好的选择。
发布于 2011-08-14 18:22:50
不要通过改变所有的顶点来移动对象!如果一个有数千个顶点的复杂模型呢?即使它是一个简单的正方形,也不要演变成如此糟糕的做法。这正是转换矩阵的作用所在。您已经在着色器代码中使用了变换矩阵。根据命名,我假设它是一个预乘的模型-视图-投影矩阵。因此,它包括在世界空间中定位对象的模型矩阵(这里是您的翻译通常应该进入的位置),在眼睛/相机空间中定位世界的视图矩阵(有时模型和视图矩阵被组合成单个模型视图矩阵,就像在固定函数GL中一样),以及对裁剪体积执行任何类型的透视投影和/或变换的投影矩阵,所有这三种矩阵都乘以P*V* M。如果对这些变换矩阵及其使用仍有一些问题,请参考一些关于3d变换的文献或您最喜欢的OpenGL教程。
https://stackoverflow.com/questions/7055784
复制相似问题