使用OpenGL将对象放置在网格上的正确位置是什么?

时间:2012-11-21 05:54:20

标签: java opengl

为了论证,假设我想在2x网格上放置一个墙对象(为简单起见,让它假装它只是一个1x1的方格),这是20x20。假设我在0和1之间的坐标中建模了对象。

所以,我的问题是,以正确的方式使用openGL(我意识到有很多方法可以手动更改坐标,但这不会为我的未来提供动力),我如何将此对象放在网格在该位置(5,5)?它与模型矩阵有关吗?

2 个答案:

答案 0 :(得分:3)

是的,我认为你有正确的想法。

如果您的墙存在于从(0,0)到(1,1)的模型空间中,并且您想要将此墙的特定实例定位在(5,5)到(6,6),而不是适当的要做的事情是用一个模型矩阵绘制这个墙,该矩阵在x和y方向上由5个单位平移。

答案 1 :(得分:1)

您不应使用转换矩阵放置单个基元。每当你更换一个制服(也就是矩阵)时,很可能必须刷新光栅化器管线,这是一个肯定的性能杀手。

作为一般规则,为了提高效率,应将给定的变换矩阵应用于场景中的至少100个基元。因此,如果您有一些瓷砖网格,最好将它们复制 - 转换为更大的顶点数组,或使用实例化(如果可用)。