1.[3D游戏开发实践] Cocos Cyberpunk 源码解读-目录结构
2.osg深入探究---第三天
[3D游戏开发实践] Cocos Cyberpunk 源码解读-目录结构
在深入解读Cocos Cyberpunk源码之前,漫游漫游首先,系统系统让我们打开scene-game-start场景,源码源码用启动游戏预览,漫游漫游进入游戏场景。系统系统点击START按钮,源码源码用纪检监察网站源码游戏正式开始。漫游漫游漫游摄像机将带你漫游整个场景,系统系统再次点击START,源码源码用可以进入游戏。漫游漫游
在电脑端按ESC键或手机端点击设置按钮,系统系统查看操作说明。源码源码用接下来,漫游漫游saas系统源码外贸让我们浏览Cocos Cyberpunk项目的系统系统目录结构。在左下角的源码源码用Assets窗口中,我们可以看到项目文件的分层。
首先,animations目录中仅包含用于场景漫游的摄像机动画文件。LightFX目录存储了光照贴图,这些是光照烘焙系统自动生成的,无需手动修改。res目录是整个游戏资源的集中地,包括动画、特效、模型、宝塔线源码指标shader、UI、音效等资源。
resources目录则存放动态加载的资源,当前内容较少,随着游戏的完善,资源将会增多。scene目录包含了环境反射探针文件,与场景文件名对应的文件夹存放反射贴图。scene-development目录则包含一些用于单元测试的开发场景。
scripts目录存放所有游戏逻辑脚本,而src目录可能包含项目开发过程中的鲁大师 c 源码测试文件。test目录同样是用于测试的,存放的文件与项目无关。scene目录则是游戏主场景,而scene-game-start则为游戏启动场景,进行UI逻辑初始化,并加载游戏主场景。
自定义管线以编辑器扩展的形式存在,可将其移至项目中。管线对应自定义管线,通过在场景中新建节点并添加pipeline/graph/pipeline-graph.ts组件来查看可视化管线图。实时探针相关组件在反射探针节点上挂载,提供实时更新功能。布洛芬药品溯源码
反射探针节点上的ReflectionUtils脚本组件实现了实时更新探针的逻辑,适用于需要实时探针的项目。此外,Cocos Cyberpunk还实现了SphereProjection修正,使得反射更符合物体形状。
静态遮挡剔除机制在Cocos Cyberpunk中实现,通过将可见关系预存入空间格子,渲染时直接查表获得渲染列表,极大提升效率。这一部分主要在scene场景中的static-occlusion-culling结点中处理。
机型适配策略在Cocos Cyberpunk中实现,根据设备性能选择渲染效果,确保流畅帧率。处理了不同设备上的效果调整,包括性能开关策略、机型分档策略,主要在href-settings.ts、gpu.ts和gpu-mobiles.ts文件中实现。
游戏逻辑方面,Cocos Cyberpunk包含完整的TPS游戏逻辑,init节点包含了特效、UI、对象池等节点,挂载的init.ts脚本组件确保游戏逻辑在主场景加载后持续运行。接下来,我们将对游戏逻辑相关源码进行深入解读。
osg深入探究---第三天
今天我们将深入探讨osg中的setUpViewInWindow, setUpViewOnSingleScreen以及setUpViewAcrossAllScreens函数。
在View.cpp的第行,setUpViewInWindow的主体是ViewConfig子类的apply方法。ViewConfig基类仅包含configure和getActiveDisplaySetting两个方法。apply传入的是SingleWindow配置,主要用于设置窗口参数。
在apply内部,我们关注SingleWindow的configure函数。这个函数首先通过osg::GraphicsContext的getWindowSystemInterface获取系统API接口,这是在GraphicsContext.cpp的setWindowSystemInterface中设置的,用于指定平台的视窗API,如Win, X或Carbon。
配置函数中,还会获取DisplaySettings,它保存了OSG关于图形显示和立体显示的所有信息,如屏幕类型、立体显示模式等。DisplaySettings的设置不仅限于此,还有如屏幕分辨率、刷新率等。
函数继续创建GraphicsContext,并将其关联到摄像机,createGraphicsContext会自动完成获取窗口API接口、设置默认屏幕等任务。剩下的配置工作包括设置摄像机的视口和投影,以及与GUI事件处理相关的信息。
setUpViewOnSingleScreen和setUpViewAcrossAllScreens的实现与setUpViewInWindow类似,但前者针对单个屏幕,后者处理多屏幕情况。GraphicsContext::getWindowingSystemInterface和getNumScreens函数在此派上用场。
最后,setUpViewAcrossAllScreens还会处理场景数据的分配,包括漫游器设置和摄像机渲染器的配置。具体细节可参考源代码,特别是GraphicsWindowWin.cpp。
2024-11-28 15:55
2024-11-28 15:17
2024-11-28 15:14
2024-11-28 14:30
2024-11-28 14:03
2024-11-28 13:57