You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS应用中如何用OpenGL 4x4矩阵将2D物体沿X轴移动10个单位?

如何在iOS OpenGL 2D场景中沿X轴移动物体?

嘿,作为OpenGL新手不用慌,这个问题其实挺基础的,咱们一步步来搞定它~

你现在的代码里,translation是(0.0f, 0.0f, 0.0f),对应的平移矩阵是单位矩阵,所以物体默认在原点位置。要沿X轴移动10个单位,核心就是修改平移向量的X分量,然后重新生成平移矩阵就行。

直接修改平移量的方案

OpenGL的平移矩阵结构你已经写对了——第四列的前三个元素分别对应X、Y、Z方向的平移距离。所以只需要把translation的X值改成10.0f,就能让物体沿X轴正方向移动10个单位:

// 修改平移向量的X分量为10.0f,Y和Z保持不变
Vect3F translation = Vect3F(10.0f, 0.0f, 0.0f); 
Matrix44F translationMatrix({ 
    1, 0, 0, translation[0], 
    0, 1, 0, translation[1], 
    0, 0, 1, translation[2], 
    0, 0, 0, 1 
}); 

如果需要持续移动(比如动画效果)

要是你想让物体每一帧都移动一点,不用每次重新定义translation,可以在更新逻辑里累加X分量:

// 先在初始化时定义好平移向量
Vect3F translation = Vect3F(0.0f, 0.0f, 0.0f); 
Matrix44F translationMatrix;

// 假设每一帧的更新函数里执行这段代码
void updateFrame() {
    // 每次X轴增加0.1个单位,速度可以根据需求调整
    translation[0] += 0.1f; 
    // 重新生成平移矩阵
    translationMatrix = Matrix44F({ 
        1, 0, 0, translation[0], 
        0, 1, 0, translation[1], 
        0, 0, 1, translation[2], 
        0, 0, 0, 1 
    }); 
}

小提醒

OpenGL里矩阵乘法的顺序很关键!如果之后你需要给物体加旋转、缩放操作,记得遵循先缩放、再旋转、最后平移的顺序来组合矩阵,不然会出现奇怪的偏移效果哦。

内容的提问来源于stack exchange,提问作者Atalyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:01:26