0

为了便于讨论,假设我想在 20x20 的 2d 网格上放置一个墙壁对象(为简单起见,我们假设它只是一个 1x1 的正方形)。假设我在 0 和 1 之间的坐标中建模了对象。

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

4

2 回答 2

3

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

如果您的墙存在于 (0,0) 到 (1,1) 的模型空间中,并且您希望将这面墙的特定实例定位在 (5,5) 到 (6,6) 之间,那么要做的就是将使用在 x 和 y 方向平移 5 个单位的模型矩阵来绘制这面墙。

于 2012-11-21T07:50:37.083 回答
1

您不应该使用转换矩阵来放置单个基元。每次更改统一(又名矩阵)时,很可能必须刷新光栅化器管道,这无疑是性能杀手。

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

于 2012-11-21T09:22:50.127 回答