c – OpenGL / GLSL / GLM – Skybox像第三人一样旋转
我刚刚开始实现天空盒,我正在使用OpenGL / GLSL和GLM作为我的数学库.我假设问题是矩阵相关的,我无法找到利用GLM库的实现:
天空盒的模型加载得很好,然而相机在3d第三人称相机中围绕它旋转就好了. 对于我的天空盒矩阵,每次我的相机更新时我都会更新它.因为我使用glm :: lookAt,它基本上以与我的视图矩阵相同的方式创建,除了我使用0,0作为方向. 这是我的视图矩阵创建.它在渲染对象和几何体时工作正常: direction = glm::vec3(cos(anglePitch) * sin(angleYaw),sin(anglePitch),cos(anglePitch) * cos(angleYaw)); right = glm::vec3(sin(angleYaw - 3.14f/2.0f),cos(angleYaw - 3.14f/2.0f)); up = glm::cross(right,direction); glm::mat4 viewMatrix = glm::lookAt(position,position+direction,up); 同样,我的天空矩阵以相同的方式创建,只有一个变化: glm::vec3 position = glm::vec3(0.0f,0.0f,0.0f); glm::mat4 skyView = glm::lookAt(position,position + direction,up); 我知道天空盒不应用翻译,只考虑轮换,所以我不确定问题是什么.有更简单的方法吗? 视觉辅助: 直接没有任何动静 当我旋转相机时: 我的问题是:如何使用glm:lookAt设置正确的矩阵来渲染天空盒? 解决方法
Esthete是正确的skybox / skydome只是对象意味着你不改变投影矩阵!
你的渲染应该是这样的: >清除屏幕/缓冲区 当然你可以临时将你的相机位置(投影矩阵)设置为(0,0)并保留带有标识的模型视图矩阵,有时候更精确的方法但不要忘记在天空盒绘制后设置相机位置. 希望能帮助到你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |