Q3D 设置纵横比对图像没有影响

问题描述

再次尝试制作一些非开箱即用的东西。我面临以下问题: 我试图改变像

这样的相机的纵横比
Qt3DRender::QCamera *camera = view.camera();
    camera->lens()->setPerspectiveProjection(45.0f,100.0f/*16.0f/9.0f*/,0.1f,1000.0f);
    camera->lens()->setProjectionType(Qt3DRender::QCameraLens::ProjectionType::PerspectiveProjection);
    camera->setPosition(QVector3D(0,40.0f));
    camera->setViewCenter(QVector3D(0,0));

但显然它没有任何影响。就好像这个参数与图像形成完全无关。 有人可以解释我如何设置纵横比或任何其他方法来设置“uniform mat4 mvp”;如果我无论如何都必须使用着色器。

是否有任何关于 CameraLens 如何将其值传递给着色器的简明参考?代码非常庞大和复杂,我不想太深入。

解决方法

在研究了 Q3D 的源代码后,我发现纵横比是由引擎动态改变的。停止它的唯一方法是使用“setProjectionMatrix”函数,该函数将停止投影矩阵的自动更新,一切都由您自己处理(包括剔除计算和正确的投影矩阵形成)。