fix camera update

This commit is contained in:
Nick Fisher
2022-08-19 14:33:22 +10:00
parent cab2ac45f8
commit e64f426784
2 changed files with 24 additions and 3 deletions

View File

@@ -86,17 +86,27 @@ const float kSensitivity = 100.0f;
FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
FreeResource freeResource)
: _layer(layer), _loadResource(loadResource), _freeResource(freeResource) {
Log("Creating FilamentViewer");
_engine = Engine::create(Engine::Backend::OPENGL);
Log("Engine created");
_renderer = _engine->createRenderer();
_renderer->setDisplayInfo({.refreshRate = 60.0f,
.presentationDeadlineNanos = (uint64_t)0,
.vsyncOffsetNanos = (uint64_t)0});
Renderer::FrameRateOptions fro;
fro.interval = 30;
_renderer->setFrameRateOptions(fro);
_scene = _engine->createScene();
Log("Scene created");
Entity camera = EntityManager::get().create();
_mainCamera = _engine->createCamera(camera);
Log("Main camera created");
_view = _engine->createView();
_view->setScene(_scene);
_view->setCamera(_mainCamera);
@@ -112,6 +122,8 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
_swapChain = _engine->createSwapChain(_layer);
Log("Swapchain created");
View::DynamicResolutionOptions options;
options.enabled = true;
// options.homogeneousScaling = homogeneousScaling;
@@ -140,7 +152,7 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
_resourceLoader->addTextureProvider("image/png", _stbDecoder);
_resourceLoader->addTextureProvider("image/jpeg", _stbDecoder);
manipulator = Manipulator<float>::Builder()
.orbitHomePosition(0.0f, 0.0f, 0.05f)
.orbitHomePosition(0.0f, 0.0f, 1.0f)
.targetPosition(0.0f, 0.0f, 0.0f)
.build(Mode::ORBIT);
@@ -154,6 +166,8 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
// .castShadows(true)
.build(*_engine, _sun);
_scene->addEntity(_sun);
Log("Added sun");
_sceneAssetLoader = new SceneAssetLoader(_loadResource,
_freeResource,
@@ -528,10 +542,14 @@ void FilamentViewer::updateViewportAndCameraProjection(
_view->setViewport({0, 0, _width, _height});
const double aspect = (double)width / height;
_mainCamera->setLensProjection(_cameraFocalLength, aspect, kNearPlane,
Camera& cam =_view->getCamera();
cam.setLensProjection(_cameraFocalLength, 1.0f, kNearPlane,
kFarPlane);
Log("Set viewport to width: %d height: %d scaleFactor : %f", width, height,
cam.setScaling({1.0 / aspect, 1.0});
Log("Set viewport to width: %d height: %d aspect %f scaleFactor : %f", width, height, aspect,
contentScaleFactor);
}