我正在使用可编程管道(OpenGL 4)。问题如下。我有称为“平面”的默认原语,它有 4 个顶点 - 在剪辑空间坐标 [-1, 1] 范围内定义。我从不直接移动它们来缩放平面,而是将比例应用于模型矩阵。因此,例如,要获得宽度 =100,高度 = 50 的平面,我缩放平面:
_modelMatrix.scale(100/2,50/2,1);
我还有一个锚点,它定义了平面的中心,并且可以四处移动以偏移局部中心。问题:一切正常,直到我在移动枢轴后开始缩放平面。例如,如果平面 width=100 和 height=100 ,我想将中心偏移到平面的左上角我将模型矩阵转换为当前位置 + 添加 x 和 y 偏移值(50 和 -50)。我让中心在那里正常。但是,当我再次缩放平面时,枢轴中心不会保持相对于新的比例,但由于它不随对象一起缩放而发生偏移。确保定义的锚点相对于新比例进行调整的正确方法是什么?我知道在固定管道中,通过添加锚点偏移很容易解决通过 API 调用定义顶点时,直接到顶点,