RenderWare 会根据摄像机距离选择合适的 LOD。

news/2025/10/8 0:43:52/文章来源:https://www.cnblogs.com/hshy/p/19129045

RenderWare 会根据摄像机距离选择合适的 LOD。

1️⃣ 基本概念

  • Atomic(RpAtomic:RenderWare 最小渲染单位,可以理解为一个模型实例。

  • LOD(Level of Detail):根据距离或屏幕占比,选择不同精度的几何体渲染,优化性能。

  • LODAtomic 插件:扩展 RpAtomic,让它支持多套几何数据,并根据距离自动切换。


2️⃣ 常量与类型

 
#define RPLODATOMICMAXLOD 20
  • 每个 Atomic 最多支持 20 个 LOD 几何体。

 
typedef RwInt32 (*RpLODAtomicLODCallBack)( RpAtomic *atomic );
  • 回调函数类型,用于自定义 LOD 选择逻辑。


3️⃣ 插件挂载

 
extern RwBool RpLODAtomicPluginAttach(void);
  • 挂载 LODAtomic 插件。

  • 依赖:Atomic 数据结构必须已经存在。

  • 通常挂载顺序:在世界插件(RpWorldPluginAttach)之后、材质/渲染插件之前。


4️⃣ 设置/获取几何体

 
RpAtomic *RpLODAtomicSetGeometry(RpAtomic *atomic, RwInt32 lodIdx, RpGeometry *geometry); RpGeometry *RpLODAtomicGetGeometry(RpAtomic *atomic, RwInt32 lodIdx);
  • 给某个 Atomic 的某个 LOD 级别设置或获取几何体。

  • lodIdx 范围 0~19(RPLODATOMICMAXLOD-1)。


5️⃣ 当前 LOD 与范围

 
RpAtomic *RpLODAtomicSetCurrentLOD(RpAtomic *atomic, RwInt32 lodIdx); RwInt32 RpLODAtomicGetCurrentLOD(RpAtomic *atomic); RpAtomic *RpLODAtomicSetRange(RpAtomic *atomic, RwReal farRange); RwReal RpLODAtomicGetRange(RpAtomic *atomic);
  • SetCurrentLOD / GetCurrentLOD:手动切换或查询当前 LOD。

  • SetRange / GetRange:设置该 LOD 对应的可见距离,RenderWare 会根据摄像机距离选择合适的 LOD。


6️⃣ 摄像机与回调

 
void RpLODAtomicSetCamera(RwCamera *camera); RpAtomic *RpLODAtomicSetLODCallBack(RpAtomic *atomic, RpLODAtomicLODCallBack callback); RpAtomic *RpLODAtomicSelectLOD(RpAtomic *atomic);
  • 设置当前使用的摄像机。

  • 可为 Atomic 设置自定义 LOD 回调函数(例如特殊规则选择几何)。

  • RpLODAtomicSelectLOD:根据摄像机和范围自动选择最合适的 LOD。


7️⃣ 遍历与渲染挂钩

 
RpAtomic *RpLODAtomicForAllLODGeometries(RpAtomic *atomic, RpGeometryCallBack callback, void *pData); RpAtomic *RpLODAtomicHookRender(RpAtomic *atomic); RpAtomic *RpLODAtomicUnHookRender(RpAtomic *atomic);
  • 遍历某个 Atomic 的所有 LOD 几何体。

  • Hook/Unhook 渲染:可以在渲染管线前后插入自定义处理(比如调试、特殊效果)。


🔹 总结

  • LODAtomic 插件是可选插件,必须挂载在 Atomic 插件之后。

  • 目的是 优化渲染性能:远处用低精度几何,近处用高精度几何。

  • 使用流程大致是:

    1. 挂载插件:RpLODAtomicPluginAttach()

    2. 为每个 Atomic 设置多级几何:RpLODAtomicSetGeometry()

    3. 设置可见距离和摄像机

    4. 在渲染前调用 RpLODAtomicSelectLOD() 自动选择 LOD

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站快速注册ui设计流程培训网站

Widget widget存储视图的配置信息,没有状态所以是不可变的,每个绘制周期(帧率),widget都不会刷新,而是会被重建。 StatelessWidget和StatefulWidget - - - 怎样判断是需要更新element,还是替换…

LOD 的概念

LOD 的概念1️⃣ LOD 的概念 LOD(Level of Detail,细节等级) 是计算机图形学中常用的一种性能优化技术,其核心思想是:根据物体与摄像机的距离、屏幕占比或视角的重要性,动态选择不同精度的模型或材质,以减少渲染…

网站模板之家免费模板大流量网站 优化

部分网站通过Http头中的User-Agent判断浏览器类型,如果是手机,显示手机版页面内容,如果是普通PC浏览器,显示电脑版网页内容。 因此谷歌Chrome浏览器,可以通过修改User-Agent和页面分辨率模拟手机浏览器访问网页。如iPh…

重庆做腋臭骑士网站做谷歌推广一个月赚10万

本文介绍的是 PointNet 作者的博士论文:3D场景理解中的点云深度学习。从上图可以看到,整个博士论文主要贡献有两块:一是点云深度学习的网络架构(PointNet 和 PointNet);二是在3D场景理解中的应用&#xff0…

龙芯是被gcc正儿八经支持的

截图来自皮卡鱼的Makefile, which应该是从著名的国际象棋引擎Stockfish改过来的:修改最底层的棋盘棋子表示,搜索和NNUE部分不用大改。 AI说:43MB的NNUE文件,其模型规模可能属于轻量级范围(约数百万参数),对应的…

python程序设计课程练习题

前言 这是一份python程序设计课程的练习答案,题目来源于https://www.dotcpp.com/team/2526 各位同学,我想对同学们说的是比起死记硬背代码,老师更希望同学们能锻炼自己的思维逻辑,开发提升智力,切记不要死记硬背代…

世界对象是 RenderWare 场景的核心

世界对象是 RenderWare 场景的核心enderWare 世界(World)模块的 API 声明,主要提供了操作场景世界(RpWorld)、扇区(RpWorldSector)、以及全局/局部光源、材质、模型等的接口。下面帮你梳理它的用途和结构:1️⃣…

北京正规网站建设单价群晖自行安装wordpress

文章目录1. 题目2. 解题1. 题目 描述 给你一个整数数组 nums 和一个正整数 threshold ,你需要选择一个正整数作为除数,然后将数组里每个数都除以它,并对除法结果求和。 请你找出能够使上述结果小于等于阈值 threshold 的除数中 最小 的那个…

IEEE754浮点格式与解析

0 前言 在完成学校RM嵌入式软件组的作业时遇到了一个问题:将0x00,0x00,0x20,0x40这四个十六进制数据根据一定规则变为浮点数2.5f,我询问AI得知这与IEEE754的浮点数存储规则有关,这篇随笔就来记录一下。 1.IEEE 754简…

国庆 Day3 强基数学

复数、不等式、方程、代数恒等变形……复数 四种基本表示形式:代数、三角、向量(几何法)、指数(基本同三角)。 一个重要公式:\(|z|^2=z\cdot z(共轭)\)。Trick 1:利用 \(-1=i^2\) 进行代数变形。Eg:\(z^2-2z+2…

制作网站公司 英语网站首页目前主要的网络营销方式

文章目录 前言一、设计框图二、GT_module三、PHY_module3.1、PHY_tx模块3.2、PHY_rx_bitsync模块3.3、PHY_rx模块 四、上板测试 前言 有了对64B66B协议的认识以及我们之前设计8B10B自定义PHY的经验,本文开始对64B66B自定义PHY的设计 一、设计框图 二、GT_module …

网站页面布局模板工业互联网平台首先要提高数据的挖掘能力

[vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解 模板引擎: 负责组装数据,以另外一种形式或外观展现数据。 优点: 可维护性(后期改起来方便); 可扩展性&#…

学校建设门户网站的好处营销型网站建设一般要多少钱

常用音频接口:TDM,PDM,I2S,PCM_tdm音频_沙漠的甲壳虫的博客-CSDN博客 I2S/PCM接口及音频codec_音频pcm接口模块设计-CSDN博客 2个TDM8功放调试ing_周龙(AI湖湘学派)的博客-CSDN博客 数字音频接口时序----IIS、TDM、PCM、PDM_td…

wordpress点赞排行榜宁波seo智能优化

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

py网站开发视频教程网站开发文献资料

字典的每个键值对用冒号分割,键值对之间用逗号分隔,所有键值对包括在{}中。d {key1 : value1, key2 : value2 }键必须是唯一的,值可以不唯一。值可以取任何数据类型,但键必须是不可变对象,如字符串,数字或…

公司网站制作机构邢台做网站的

阅读目录一 数学定义的函数与python中的函数初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把…

网站建设代码排版出错app订制

python操作文件 open的常用参数: 1.要读取的文件名字或者文件路径 2.文件打开的模式 r:只读模式 rb:以二进制的格式去打开文件 3.encoding:用来指定文件的编码格式(使用rb的时候,不需要加该参数) #打…

山东省建设工程注册中心网站英文网站建设哪家好

electron 静默下载文件 cooljser 2020-12-24 electron 上传、下载文件是一个很常用的功能,在 electron 中我们不但可以实现和 h5 一样的下载,也可以实现静默下载,让用户无感知。官方的做法是通过mainWindow.webContents.downloadURL(url)来…

宁波建设工程检测行业协会网站汽车企业管理系统

由于原本的数据库命名不规范,需要进行重新命名,最终确定方案为新建数据库后迁移表,以下为脚本。 #!/bin/bashecho -e "\033[34m 此脚本功能为修改数据库名称(需要新建数据库后将数据迁移到新数据库),…

默认实现,子类(如 CRenderDevice_Renderware)

默认实现,子类(如 CRenderDevice_Renderware)这是基类的默认实现,子类(如 CRenderDevice_Renderware)会在它的 OnCreate 中 先调用基类的 OnCreate,再做自己的渲染 API 初始化。 调用子类的OnCreate 一定会调用…