/*
* Copyright (C) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef OHOS_RENDER_3D_SCENE_ADAPTER_H
#define OHOS_RENDER_3D_SCENE_ADAPTER_H
#include "intf_scene_adapter.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespace OHOS::Render3D {
class TextureLayer;
class SceneAdapter : public ISceneAdapter {
public:
SceneAdapter();
bool LoadPluginsAndInit() override;
std::shared_ptr CreateTextureLayer() override;
void OnWindowChange(const WindowChangeInfo& windowChangeInfo) override;
void RenderFrame(bool needsSyncPaint = false) override;
void Deinit() override {};
bool NeedsRepaint() override;
virtual void SetSceneObj(META_NS::IObject::Ptr pt);
~SceneAdapter() override;
private:
bool LoadEngineLib();
bool LoadPlugins(const CORE_NS::PlatformCreateInfo& platformCreateInfo);
bool InitEngine(CORE_NS::PlatformCreateInfo platformCreateInfo);
void AttachSwapchain(META_NS::IObject::Ptr camera, RENDER_NS::RenderHandleReference swapchain);
void RenderFunction();
void InitRenderThread();
void DeinitRenderThread();
META_NS::IObject::Ptr sceneWidgetObj_;
RENDER_NS::RenderHandleReference swapchainHandle_;
std::shared_ptr textureLayer_;
HapInfo hapInfo_;
SCENE_NS::IBitmap::Ptr bitmap_;
uint32_t key_;
META_NS::ITaskQueue::Token renderTask {};
bool needsRepaint_ = true;
META_NS::ITaskQueueTask::Ptr singleFrameAsync;
META_NS::ITaskQueueWaitableTask::Ptr singleFrameSync;
};
} // namespace OHOS::Render3D
#endif // OHOS_RENDER_3D_SCENE_ADAPTER_H