Scene增加RenderFramework属性,SceneNode增加获取RenderFramework功能

This commit is contained in:
2025-07-28 00:09:01 +08:00
parent d577642533
commit 0b2d3d100a
4 changed files with 29 additions and 3 deletions

View File

@@ -6,12 +6,16 @@
namespace hgl::graph namespace hgl::graph
{ {
class RenderFramework;
/** /**
* 场景管理器<Br> * 场景管理器<Br>
* 管理一个场景中的所有资源与场景节点 * 管理一个场景中的所有资源与场景节点
*/ */
class Scene class Scene
{ {
RenderFramework *render_framework=nullptr; ///<渲染框架
U8String SceneName; ///<场景名称 U8String SceneName; ///<场景名称
ObjectList<SceneNode> SceneNodePool; ///<场景节点池 ObjectList<SceneNode> SceneNodePool; ///<场景节点池
@@ -28,10 +32,17 @@ namespace hgl::graph
SceneNode * GetRootNode (){return root_node;} ///<获取场景根节点 SceneNode * GetRootNode (){return root_node;} ///<获取场景根节点
RenderFramework * GetRenderFramework()const
{
return render_framework;
}
public: public:
Scene() Scene(RenderFramework *rf)
{ {
render_framework=rf;
root_node=new SceneNode(this); root_node=new SceneNode(this);
} }

View File

@@ -18,6 +18,8 @@ namespace hgl::graph
//每个SceneNode都要记录Scene来区分自己属于那个场景 //每个SceneNode都要记录Scene来区分自己属于那个场景
//这个场景可能是一个确实是一个场景也有可能只是一个StaticMesh //这个场景可能是一个确实是一个场景也有可能只是一个StaticMesh
class CameraControl;
using SceneNodeID =int64; using SceneNodeID =int64;
using SceneNodeList =ObjectList<SceneNode>; using SceneNodeList =ObjectList<SceneNode>;
@@ -60,6 +62,8 @@ namespace hgl::graph
public: public:
Scene * GetScene()const{ return main_scene; } ///<取得主场景 Scene * GetScene()const{ return main_scene; } ///<取得主场景
RenderFramework * GetRenderFramework()const; ///<取得渲染框架
CameraControl * GetCameraControl()const; ///<取得默认摄像机控制器
const SceneNodeID & GetNodeID ()const { return node_id; } ///<取得节点ID const SceneNodeID & GetNodeID ()const { return node_id; } ///<取得节点ID
const SceneNodeName & GetNodeName ()const { return node_name; } ///<取得节点名称 const SceneNodeName & GetNodeName ()const { return node_name; } ///<取得节点名称

View File

@@ -134,7 +134,7 @@ bool RenderFramework::Init(uint w,uint h)
render_resource=new RenderResource(device); render_resource=new RenderResource(device);
OnChangeDefaultScene(new Scene); OnChangeDefaultScene(new Scene(this));
default_camera=new Camera(); default_camera=new Camera();

View File

@@ -2,9 +2,20 @@
#include<hgl/component/SceneComponent.h> #include<hgl/component/SceneComponent.h>
#include<hgl/graph/Mesh.h> #include<hgl/graph/Mesh.h>
#include<hgl/graph/Scene.h> #include<hgl/graph/Scene.h>
#include<hgl/graph/RenderFramework.h>
namespace hgl::graph namespace hgl::graph
{ {
RenderFramework *SceneNode::GetRenderFramework()const
{
return main_scene?main_scene->GetRenderFramework():nullptr;
}
CameraControl *SceneNode::GetCameraControl()const
{
return main_scene?main_scene->GetRenderFramework()->GetDefaultCameraControl():nullptr;
}
//void SceneNode::SetRenderable(Mesh *ri) //void SceneNode::SetRenderable(Mesh *ri)
//{ //{
// render_obj=ri; // render_obj=ri;