fix camera update
This commit is contained in:
@@ -86,17 +86,27 @@ const float kSensitivity = 100.0f;
|
|||||||
FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
|
FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
|
||||||
FreeResource freeResource)
|
FreeResource freeResource)
|
||||||
: _layer(layer), _loadResource(loadResource), _freeResource(freeResource) {
|
: _layer(layer), _loadResource(loadResource), _freeResource(freeResource) {
|
||||||
|
|
||||||
|
Log("Creating FilamentViewer");
|
||||||
_engine = Engine::create(Engine::Backend::OPENGL);
|
_engine = Engine::create(Engine::Backend::OPENGL);
|
||||||
|
Log("Engine created");
|
||||||
|
|
||||||
_renderer = _engine->createRenderer();
|
_renderer = _engine->createRenderer();
|
||||||
|
|
||||||
_renderer->setDisplayInfo({.refreshRate = 60.0f,
|
_renderer->setDisplayInfo({.refreshRate = 60.0f,
|
||||||
.presentationDeadlineNanos = (uint64_t)0,
|
.presentationDeadlineNanos = (uint64_t)0,
|
||||||
.vsyncOffsetNanos = (uint64_t)0});
|
.vsyncOffsetNanos = (uint64_t)0});
|
||||||
|
Renderer::FrameRateOptions fro;
|
||||||
|
fro.interval = 30;
|
||||||
|
_renderer->setFrameRateOptions(fro);
|
||||||
|
|
||||||
_scene = _engine->createScene();
|
_scene = _engine->createScene();
|
||||||
|
|
||||||
|
Log("Scene created");
|
||||||
|
|
||||||
Entity camera = EntityManager::get().create();
|
Entity camera = EntityManager::get().create();
|
||||||
_mainCamera = _engine->createCamera(camera);
|
_mainCamera = _engine->createCamera(camera);
|
||||||
|
Log("Main camera created");
|
||||||
_view = _engine->createView();
|
_view = _engine->createView();
|
||||||
_view->setScene(_scene);
|
_view->setScene(_scene);
|
||||||
_view->setCamera(_mainCamera);
|
_view->setCamera(_mainCamera);
|
||||||
@@ -112,6 +122,8 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
|
|||||||
|
|
||||||
_swapChain = _engine->createSwapChain(_layer);
|
_swapChain = _engine->createSwapChain(_layer);
|
||||||
|
|
||||||
|
Log("Swapchain created");
|
||||||
|
|
||||||
View::DynamicResolutionOptions options;
|
View::DynamicResolutionOptions options;
|
||||||
options.enabled = true;
|
options.enabled = true;
|
||||||
// options.homogeneousScaling = homogeneousScaling;
|
// options.homogeneousScaling = homogeneousScaling;
|
||||||
@@ -140,7 +152,7 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
|
|||||||
_resourceLoader->addTextureProvider("image/png", _stbDecoder);
|
_resourceLoader->addTextureProvider("image/png", _stbDecoder);
|
||||||
_resourceLoader->addTextureProvider("image/jpeg", _stbDecoder);
|
_resourceLoader->addTextureProvider("image/jpeg", _stbDecoder);
|
||||||
manipulator = Manipulator<float>::Builder()
|
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)
|
.targetPosition(0.0f, 0.0f, 0.0f)
|
||||||
.build(Mode::ORBIT);
|
.build(Mode::ORBIT);
|
||||||
|
|
||||||
@@ -154,6 +166,8 @@ FilamentViewer::FilamentViewer(void *layer, LoadResource loadResource,
|
|||||||
// .castShadows(true)
|
// .castShadows(true)
|
||||||
.build(*_engine, _sun);
|
.build(*_engine, _sun);
|
||||||
_scene->addEntity(_sun);
|
_scene->addEntity(_sun);
|
||||||
|
|
||||||
|
Log("Added sun");
|
||||||
|
|
||||||
_sceneAssetLoader = new SceneAssetLoader(_loadResource,
|
_sceneAssetLoader = new SceneAssetLoader(_loadResource,
|
||||||
_freeResource,
|
_freeResource,
|
||||||
@@ -528,10 +542,14 @@ void FilamentViewer::updateViewportAndCameraProjection(
|
|||||||
_view->setViewport({0, 0, _width, _height});
|
_view->setViewport({0, 0, _width, _height});
|
||||||
|
|
||||||
const double aspect = (double)width / height;
|
const double aspect = (double)width / height;
|
||||||
_mainCamera->setLensProjection(_cameraFocalLength, aspect, kNearPlane,
|
|
||||||
|
Camera& cam =_view->getCamera();
|
||||||
|
cam.setLensProjection(_cameraFocalLength, 1.0f, kNearPlane,
|
||||||
kFarPlane);
|
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);
|
contentScaleFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,10 @@ namespace polyvox {
|
|||||||
Scene* _scene;
|
Scene* _scene;
|
||||||
View* _view;
|
View* _view;
|
||||||
Engine* _engine;
|
Engine* _engine;
|
||||||
|
|
||||||
|
// a default camera that we add to every scene
|
||||||
Camera* _mainCamera;
|
Camera* _mainCamera;
|
||||||
|
|
||||||
Renderer* _renderer;
|
Renderer* _renderer;
|
||||||
|
|
||||||
SwapChain* _swapChain = nullptr;
|
SwapChain* _swapChain = nullptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user