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

OpenGL GLM旋转3D立方体时lookAt仅旋转屏幕坐标而非世界坐标问题

问题原因及修复方案

核心错误:矩阵乘法顺序颠倒

GLM默认采用列主序存储矩阵,符合OpenGL标准的列向量右乘规则,你在CPU侧计算的mvp = Projection * View * Model对应的变换逻辑是「顶点坐标先乘模型矩阵、再乘视图矩阵、最后乘投影矩阵」,但你在着色器中把顶点向量放在了矩阵左侧,相当于执行了行向量左乘逻辑,完全颠倒了变换顺序,才会出现看起来是整个屏幕坐标旋转而非相机绕立方体旋转的现象。

其他次要检查点

  • 确认你已将CPU侧计算完成的mvp矩阵正确传递到着色器的camera_mat4 uniform变量
  • 检查窗口宽高变量拼写:你代码中写的window_hight属于拼写错误,正确拼写为window_height,宽高比错误会导致画面拉伸变形

修正后的GLSL代码

uniform mat4 camera_mat4;
void main()
{
    // 调整顺序:矩阵左乘列向量
    vec4 pos = camera_mat4 * vec4(vertexPosition_modelspace, 1.0);
    gl_Position = pos;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 23:39:02