update macOS

This commit is contained in:
Nick Fisher
2023-10-26 11:12:31 +08:00
parent 8b9e6a2b3a
commit cf25d8f0d7
9 changed files with 32 additions and 26 deletions

View File

@@ -127,17 +127,17 @@ namespace polyvox {
const ResourceLoaderWrapper* const _resourceLoaderWrapper;
Scene* _scene;
View* _view;
Engine* _engine;
Scene* _scene = nullptr;
View* _view = nullptr;
Engine* _engine = nullptr;
// a default camera that we add to every scene
Camera* _mainCamera;
Camera* _mainCamera = nullptr;
Renderer* _renderer;
RenderTarget* _rt;
Texture* _rtColor;
Texture* _rtDepth;
Renderer* _renderer = nullptr;
RenderTarget* _rt = nullptr;
Texture* _rtColor = nullptr;
Texture* _rtDepth = nullptr;
SwapChain* _swapChain = nullptr;

View File

@@ -257,15 +257,17 @@ FilamentAsset* AssetManager::getAssetByEntityId(EntityId entityId) {
void AssetManager::updateAnimations() {
auto now = high_resolution_clock::now();
RenderableManager &rm = _engine->getRenderableManager();
for (auto& asset : _assets) {
std::vector<int> completed;
int index = 0;
for(auto& anim : asset.mAnimations) {
auto now = high_resolution_clock::now();
auto elapsed = float(std::chrono::duration_cast<std::chrono::milliseconds>(now - anim.mStart).count()) / 1000.0f;

View File

@@ -701,6 +701,7 @@ namespace polyvox
_swapChain = nullptr;
Log("Swapchain destroyed.");
}
_engine->flushAndWait();
}
void FilamentViewer::clearAssets()
@@ -990,22 +991,22 @@ namespace polyvox
cam.lookAt(eye, target, upward);
}
// TODO - this was an experiment but probably useful to keep for debugging
// if pixelBuffer is provided, we will copy the framebuffer into the pixelBuffer.
if (pixelBuffer)
{
auto pbd = Texture::PixelBufferDescriptor(
pixelBuffer, size_t(1024 * 768 * 4),
Texture::Format::RGBA,
Texture::Type::BYTE, nullptr, callback, data);
// // TODO - this was an experiment but probably useful to keep for debugging
// // if pixelBuffer is provided, we will copy the framebuffer into the pixelBuffer.
// if (pixelBuffer)
// {
// auto pbd = Texture::PixelBufferDescriptor(
// pixelBuffer, size_t(1024 * 768 * 4),
// Texture::Format::RGBA,
// Texture::Type::BYTE, nullptr, callback, data);
_renderer->beginFrame(_swapChain, 0);
_renderer->render(_view);
_renderer->readPixels(0, 0, 1024, 768, std::move(pbd));
_renderer->endFrame();
}
else
{
// _renderer->beginFrame(_swapChain, 0);
// _renderer->render(_view);
// _renderer->readPixels(0, 0, 1024, 768, std::move(pbd));
// _renderer->endFrame();
// }
// else
// {
// Render the scene, unless the renderer wants to skip the frame.
if (_renderer->beginFrame(_swapChain, frameTimeInNanos))
{
@@ -1014,9 +1015,10 @@ namespace polyvox
}
else
{
// std::cout << "Skipped" << std::endl;
// skipped frame
}
}
// }
}
void FilamentViewer::updateViewportAndCameraProjection(

View File

@@ -77,7 +77,9 @@ public:
void doRender() {
render(_viewer, 0, nullptr, nullptr, nullptr);
_renderCallback(_renderCallbackOwner);
if(_renderCallback) {
_renderCallback(_renderCallbackOwner);
}
}
void setFrameIntervalInMilliseconds(float frameIntervalInMilliseconds) {