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; const ResourceLoaderWrapper* const _resourceLoaderWrapper;
Scene* _scene; Scene* _scene = nullptr;
View* _view; View* _view = nullptr;
Engine* _engine; Engine* _engine = nullptr;
// a default camera that we add to every scene // a default camera that we add to every scene
Camera* _mainCamera; Camera* _mainCamera = nullptr;
Renderer* _renderer; Renderer* _renderer = nullptr;
RenderTarget* _rt; RenderTarget* _rt = nullptr;
Texture* _rtColor; Texture* _rtColor = nullptr;
Texture* _rtDepth; Texture* _rtDepth = nullptr;
SwapChain* _swapChain = nullptr; SwapChain* _swapChain = nullptr;

View File

@@ -257,15 +257,17 @@ FilamentAsset* AssetManager::getAssetByEntityId(EntityId entityId) {
void AssetManager::updateAnimations() { void AssetManager::updateAnimations() {
auto now = high_resolution_clock::now();
RenderableManager &rm = _engine->getRenderableManager(); RenderableManager &rm = _engine->getRenderableManager();
for (auto& asset : _assets) { for (auto& asset : _assets) {
std::vector<int> completed; std::vector<int> completed;
int index = 0; int index = 0;
for(auto& anim : asset.mAnimations) { 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; 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; _swapChain = nullptr;
Log("Swapchain destroyed."); Log("Swapchain destroyed.");
} }
_engine->flushAndWait();
} }
void FilamentViewer::clearAssets() void FilamentViewer::clearAssets()
@@ -990,22 +991,22 @@ namespace polyvox
cam.lookAt(eye, target, upward); cam.lookAt(eye, target, upward);
} }
// TODO - this was an experiment but probably useful to keep for debugging // // 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 is provided, we will copy the framebuffer into the pixelBuffer.
if (pixelBuffer) // if (pixelBuffer)
{ // {
auto pbd = Texture::PixelBufferDescriptor( // auto pbd = Texture::PixelBufferDescriptor(
pixelBuffer, size_t(1024 * 768 * 4), // pixelBuffer, size_t(1024 * 768 * 4),
Texture::Format::RGBA, // Texture::Format::RGBA,
Texture::Type::BYTE, nullptr, callback, data); // Texture::Type::BYTE, nullptr, callback, data);
_renderer->beginFrame(_swapChain, 0); // _renderer->beginFrame(_swapChain, 0);
_renderer->render(_view); // _renderer->render(_view);
_renderer->readPixels(0, 0, 1024, 768, std::move(pbd)); // _renderer->readPixels(0, 0, 1024, 768, std::move(pbd));
_renderer->endFrame(); // _renderer->endFrame();
} // }
else // else
{ // {
// Render the scene, unless the renderer wants to skip the frame. // Render the scene, unless the renderer wants to skip the frame.
if (_renderer->beginFrame(_swapChain, frameTimeInNanos)) if (_renderer->beginFrame(_swapChain, frameTimeInNanos))
{ {
@@ -1014,9 +1015,10 @@ namespace polyvox
} }
else else
{ {
// std::cout << "Skipped" << std::endl;
// skipped frame // skipped frame
} }
} // }
} }
void FilamentViewer::updateViewportAndCameraProjection( void FilamentViewer::updateViewportAndCameraProjection(

View File

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