Renderer::cull()简析

本文详细介绍了OpenGL渲染过程中osgUtil::SceneView的使用,它主要用于摄像机剔除。主要内容包括从_availableQueue中取出SceneView,更新状态和设置,获取剔除配置,执行剔除操作,然后将SceneView加入绘制队列。此外,还提及了状态收集和立体显示的融合距离等辅助步骤。

在cull时,如果摄像机没有用线程剔除,则用Renderer::cull(),
在最长的一帧里用到了这种方法。

这里有个osgUtil::SceneView类,仅由renderer调用。这个SceneView类一开始我还以为时osgViewer;:Viewer,其实是两码事。

osgUtil::SceneView类一般是双缓存,放在_availableQueue里

可以说,Renderer的剔除过程也就是osgUtil::SceneView的操作过程

分几步
1,取出_availableQueue中取出第一个osgUtil::SceneView
2,更新osgUtil::SceneView的全局状态,状态量和设置
3,获取osgUtil::SceneView的剔除设置
4, osgUtil::SceneView剔除
5,将osgUtil::SceneView放入绘制队列_drawQueue

如果再加上状态收集,立体显示的融合距离。那就比较全面了。当然,那不是核心。

看看核心
1,取
在这里插入图片描述
2,更新状态和显示设置

3,获取筛选设置
在这里插入图片描述
4,筛选
在这里插入图片描述
5,放入绘制队列

在这里插入图片描述

OK,就这样吧

不同的 renderer 项目,其配置内容有所不同。 ### Renderer 项目 Renderer 项目没有专门的配置文件,所有的配置和初始化都在代码中完成。开发者通过调用 `renderer.New()` 方法创建新的 Renderer 实例时可传入选项参数,示例代码如下: ```go package main import ( "github.com/thedevsaddam/renderer" "net/http" ) func main() { rnd := renderer.New() mux := http.NewServeMux() // 示例路由处理函数 mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { rnd.String(w, http.StatusOK, "Welcome to renderer") }) http.ListenAndServe(":9000", mux) } ``` 这里 `renderer.New()` 可根据需要传入选项参数来进行配置,不过示例中未展示传入参数的情况 [^1]。 ### Puppeteer Renderer 在 Puppeteer Renderer 中,虽然没有特定命名为“配置文件”的文件存在,但配置主要通过以下途径进行: - **package.json 中的 scripts**:通过脚本命令的定义,可以设置启动时执行的不同任务或参数。 - **环境变量**:可以通过设置环境变量来影响应用的行为,例如设置 `PORT` 来更改服务监听的端口号,或者利用 Puppeteer 提供的环境变量来调整其行为。 - **自定义配置模块**:在复杂的应用场景中,开发者可能会创建自己的配置文件(如 `.config.js`),并通过导入该文件的方式,在应用程序运行前进行一系列的配置定制。不过,这需要根据具体实现情况来添加,并不在该项目标准配置范畴内 [^2]。 ### Quark - Renderer Quark - Renderer 是一个可以用来做图像的工具,需要导入相应的包文件并进行相应的配置。不过引用中未详细提及具体的配置内容,只说明了其使用效果跟 ECharts 类似,且需要一定的环境搭建 [^3]。 ### renderer 在弹窗字段中的使用配置 在弹窗字段中使用 renderer 时,在 js 页面中配置,示例代码如下: ```javascript columns: [ { //正常字段显示 header: "姓名", width: 80, sortable: true, dataIndex: 'name' }, { //引用 renderer 属性的字段显示 header: "状态", width: 60, sortable: false, //value 的值就是单元格中的值 renderer: function(value) { if (value == 0) { return '正在使用'; } else if (value == 2) { return '下发完成'; } else if (value == 3) { return '下发失败'; } else if (value == 4) { return '正在下发'; } else if (value == 5) { return '正在删除'; } else if (value == 6) { return '删除失败'; } else { return ''; } }, dataIndex: 'status' } ] ``` 这里 `renderer` 作为一个函数,根据单元格的值返回不同的显示内容 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值