调试最长的一帧(第17天)

2023-11-01

先看看流程

 

电子书上介绍了渲染器osgViewer::Renderer类,osgViewer::Renderer为摄像机渲染场景的工作提供了一个公共接口,当我们向视景器viewer添加了一个新的摄像机camera时,一个与摄像机相关联的渲染器Renderer也会被自动创建。当准备渲染场景时,与特定图形设备GraphicsContext相关联的摄像机也会自动调用其渲染器的响应函数,执行场景筛选与绘制等工作。渲染器负责调用场景视图

获取摄像机附带渲染器的代码:

关于场景视图在渲染器中的体现,

关于创建摄像机,就会有渲染器,

在摄像机类中,成员变量

派生关系

现在跟踪renderer::cull()

所以要设定

可以进去renderer::cull()

全局渲染状态

 

osg::State是状态机在OSG中的具体实现,封装了几乎所有的opengl状态量,属性参数,以及顶点数组的设置值,对Stateset,Geometry等类的操作,实质上都交由State类在保存和执行。它提供了对Opengl状态堆栈的处理机制,对即将进入渲染管线的数据进行优化(执行渲染状态数据的排序,减少Opengl状态的频率),同时还允许用户直接查询各种OpenGL状态的当前值

场景筛选SceneView::cull()以后会深入,所以这里不扩展。

接下来将了场景绘制

 

当然,重点在于Renderer::draw(),这里不扩展,是因为下一天的内容扩展了,就到这里吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调试最长的一帧(第17天) 的相关文章

  • 第二天(七)osg::Object* readObjectFile_const std::string& filename_const ReaderWriter::Options* options

    目前流程是 osgViewer viewBase frame viewerInit 创建帧事件 并将漫游器与事件和视口相关联 gt osgViewer Viewer ViewerInit gt osgViewer View Init gt
  • 调试最长的一帧(第19天)

    这个主要是理论了 抄一抄 最常用到场景管理方式时场景节点树结构 场景树顶点的叶节点osg Geode包含了各种需要渲染的几何体的顶点和渲染状态信息 而组节点osg Group及其派生出的各种特殊功能节点则作为场景树的各个枝节节点 它们也可以
  • osgFBO(十四)PrerenderOrder的使用

    由于前面是简单的demo 所以不用管渲染次序 然而 实际项目中 会出现多种渲染方式 这时候就要用到 camera gt setRenderOrder osg Camera PRE RENDER 还要加上具体次序 比如 采样摄像机设为2 处理
  • osg传递数组到shader,(以qedl为例)

    一 对float类型的数组 osg ref ptrosg FloatArray m dampingPixelDist 赋值 void ccBilateralFilter updateDampingTable m dampingPixelDi
  • qedl中的fixDepth()简化

    如果将PerspectiveMode的设置为1 则会传递zNear和Zfar 在fixDepth 中 而将perspectiveMode 0 则大大简化fixDepth float fixDepth float depth return c
  • osg fbo(一),生成颜色缓冲区图片

    由于工作需要 重新捡了下shader 很明显 fbo是重中之重 好记性不如烂笔头 先记录下 1 生成一个颜色纹理 为了省事 可以将纹理宽高 屏幕宽高 osg ref ptr
  • 调试最长的一帧(第七天)

    先看看总体进展 eventTraversal函数的任务 在每帧仿真过程中 取出已经发生的所有事件 摒弃哪些对场景不会有助益的 比如 在视口外的鼠标事件 依次交付给各个事件处理器 最后清空现有的事件队列 等待下一帧的到来 在View的几个成员
  • osg fbo(三),将颜色缓冲区图片通过shader变绿

    这个其实很简单 一 写顶点着色器和片元着色器 static const char vertexShader void main void n n gl Position ftransform n n static const char ps
  • 调试最长的一帧(第17天)

    先看看流程 电子书上介绍了渲染器osgViewer Renderer类 osgViewer Renderer为摄像机渲染场景的工作提供了一个公共接口 当我们向视景器viewer添加了一个新的摄像机camera时 一个与摄像机相关联的渲染器R
  • 调试最长的一帧(第12天)

    先看看总体 流程走到了更新分页数据库 分页数据库的数据流图 先找上图的4个成员变量 上图中 左侧的图框表示数据的检索和输入 中间的白色图框表示用于数据存储的内存空间 而右边的图框表示存储数据的输出 此外 蓝绿色图框表示可以在DataBase
  • osgFBO(九)多pass---2,pass2,shader将背景从红色变为绿色

    二 pass2是比较完整的 同时有输入纹理和输出纹理 与pass1类似 这里只列出不同的地方 1 pass2摄像机输入tex1 osg ref ptr
  • 调试最长的一帧(第八天)

    先看看总体进度 先获取所有的图形上下文 然后进行checkEvents 请求分发消息并通过takeEvents 获取交互事件 再交由GUIEventHandler处理交互事件 中间的步骤 在checkeEvents里面 消息分发函数 消息处
  • ViewerBase::renderingTraversals()的简易理解

    前两篇说到了camera用来剔除 context用来渲染 多线程渲染就是把cpu尽可能的分配给context 如果土豪的话 在剔除过程也分配cpu 另外 也要注意到过期请求数据不处理 当然 首先要获取场景 摄像机和上下文 现在看下摄像机剔除
  • 调试最长的一帧(第16天)

    终于到达绘制了 先看总体流程阶段 然而 从并行堆栈上看 已经有渲染线程开启了 跟着电子书走 先是介绍 抄一抄 加深印象 osg的场景渲染过程可以简单地分为三个阶段 用户APP阶段 更新用户数据 负责场景对象的运动和管理等 筛选cull阶段
  • 第二天(八)osg::Object* readObjectFile(const std::string& filename,const ReaderWriter::Options* options)

    目前流程是 osgViewer viewBase frame viewerInit 创建帧事件 并将漫游器与事件和视口相关联 gt osgViewer Viewer ViewerInit gt osgViewer View Init gt
  • osgfbo(六)从pass的角度考虑,改写fbo(二)

    什么是pass 这个问题 看似简单 也让我头疼 看了osgdefered pass定义为osg Camera 杨石兴的osg视频教程定义为osg Group 我认为一个passRoot可以定义为一个Group 包含三部分 到目前pass为止
  • 调试最长的一帧(第21天)

    看看全流程 主要讲sceneview cull 跟过去 重点在cullstage 状态树与渲染树的构建都是在pushStateSet和popStateSet函数中完成的 而CullVisitor apply函数 在遍历节点时调用 则负责根据
  • osg fbo(四),将颜色缓冲区图片中的牛通过shader变绿

    osg fbo 三 中 把整个屏幕变绿了 因为是把shader添加到了颜色缓冲区图片上了 如果只想把牛变绿 就需要把shader添加到原始场景根中 即 osg ref ptr
  • 调试最长的一帧(第23天)

    看看总体进度 第22天通过CUllvisitor创建了渲染树和状态树 并进行必要的剔除 接下来进行排序和优化 RenderStage sort函数时按照前序渲染台 当前渲染台和后续渲染台的顺序进行 其中前序渲染台和后续渲染台通过Camera
  • osgFBO(十二)深度纹理与颜色纹理混合

    前面涉及到了深度纹理和颜色纹理 由于qedl中 也要两者混合 所以 要考虑到两者混合 这里只是简单将其相加 一 设置纹理 采样颜色纹理 osg ref ptrosg Texture2D texColor createFloatRectang

随机推荐

  • SQL SERVER专题实验3 简单查询

    第1关 基本知识 第1题 A 第2题 ABC 第3题 AB 第4题 AB 第5题 ABCD 第6题 ABCD 第7题 AC 第2关 按指定列 全部列和计算表达式的查询 本关任务 用 SELECT 语句检索数据表中指定字段的数据 按要求输出目
  • 公交路线推荐

    项目从0 1出 请写出公交车路线推荐策略 逻辑框架 心法 1 产品目标 用户以最低的代价 成本完成想要做的事情 2 需求理解 给出区分不同用户群 场景的规则 定义衡量标准 将其数字化 通常是准确率和召回率 3 提出解决方案 给出针对每个用户
  • 逻辑运算符

    逻辑运算符 逻辑运算符概述 短路逻辑运算符 之间的区别 逻辑运算符概述 可以把多个条件的布尔结果放在一起运算 最终返回一个布尔结果 double length 11 5 double width 6 95 需求 长度大于等于10cm 宽度大
  • Java POI excel单元格背景色(填充)、字体颜色(对齐)、边框(颜色)、行高、列宽设置

    文章目录 1 Excel Cell单元格背景色 颜色名称对照关系 2 Excel Cell单元格背景填充样式 颜色填充对照关系 3 Excel Cell字体样式设置 对照图 4 Excel 行高 列宽设置 5 Excel单元格边框设置 边框
  • web前端复习

    web前端复习 1 文档声明与字符编码 2 HTML常用标签 1 语义 2 常用标签 水平线hr 3 特殊符号 4 div和span标签 5 列表 1 有序列表 ol li 2 无序列表 ui li 3 自定义列表 dl dt 6 图片标签
  • Gap业绩逆转,宝尊电商是如何当好“全球品牌数字商业伙伴”的?

    电商永不眠 技术 消费趋势 供应链 任何一个因素都可以引起商业格局的巨变 一些看似普通的事件落到一个品牌身上 往往会带来改变命运的巨大变化 就像今年2月 宝尊官宣已完成对Gap大中华区的收购 到现在 Gap便已在宝尊的塑造下开启焕新 北京时
  • Linux中的PATH环境变量

    关于执行文件路径的变量 PATH 我们在前面说过 Linux有两大原则 一切皆文件和沉默是金 那么这些命令是否也有对应的文件呢 事实上确实是这样 我们可以通过which 命令来验证 这个命令是用来查找某个命令的绝对路径 root local
  • 数据结构基础训练

    数据结构基础训练 数组和字符串 数组的操作 数组操作四种 读取元素 从索引从0开始 内存连续 查找元素 考虑最坏的情况 即所有元素不满足查找条件 插入元素 分顺序存储式插入和链式存储插入 链式较方便 删除元素 删除后的索引需要重新按新的元素
  • 学生管理系统(java)

    学生管理系统实现步骤 案例需求 针对目前我们的所学内容 完成一个综合案例 学生管理系统 该系统主要功能如下 添加学生 通过键盘录入学生信息 添加到集合中 删除学生 通过键盘录入要删除学生的学号 将该学生对象从集合中删除 修改学生 通过键盘录
  • 如何匹配基本正则表达式模式?条码拆分器BardecodeFiler v2.6.1.1全新发布!

    BardecodeFiler是一个随时可用的应用程序 可根据条形码值拆分和重命名TIF JPEG和PDF文档 应用程序从输入文件夹中读取文档 并在输出文件夹中创建新文档 原始文档不会被修改或删除 BardecodeFiler可以使用 reg
  • 一致性hash算法 - consistent hashing

    一致性hash算法 consistent hashing consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出 目前在 cache 系统中应用
  • Web自动化测试工具:Selenium3+Java详解

    今天我们一起来聊一聊Selenium的常用API使用 编程语言选用Java实现 如果使用Python等语言也大同小异 此外 本文在行文时默认同学们都已经具备一定的前端Html CSS等基础 由于本主题涉及的内容较多 加之笔者也是利用业余时间
  • 软件工程能力漫谈:比编码更重要的,是项目管理能力

    章老师博士毕业后在清华待了 12 年 主要是做网络方面的研究 到 2006 年的时候离开清华 进入到工业界 首先做了六年的用户产品研发 之后在 2012 年加入百度 一直做网络基础架构相关的开发工作 主要是对内服务 在运维部和系统部 做 B
  • python 图片识别_python识别图片文字

    滑稽研究所 python识别图片文字 哈喽 大家好呀 我是滑稽君 大家在写论文时可能经常碰到无法复制文字的文章 明明找到了需要的内容却无法直接复制使用 这让我们十分苦恼 那么本期滑稽君就告诉大家如何使用python识别图片中的文字 滑稽君整
  • 几款优秀的Windows密码抓取工具

    前言 本篇介绍几款优秀的Windows上的密码抓取工具 每个工具都有自己的特点非常实用 欢迎补充 0x01 Mimikatz 个人点评 这款工具非常强大 公认的Windows密码神器 1 简介 Mimikat是一个法国人写的轻量级调试器 M
  • Linux kernel内存管理之OOM相关参数

    一 OOM概念 OOM是Out Of Memory 内存溢出 的缩写 虽然linux kernel的内存管理有很多机制 从cache中回收 swap out等 可以满足用户空间的各种虚拟内存需求 但是 当你的系统配置不合理 让一匹小马拉大车
  • 浅析React Hooks原理

    React Hooks 简介 React Hooks 是 React 16 8 以及之后版本的产物 React Hooks 就是一堆钩子函数 不同的钩子函数提供了不同的功能 React 通过这些钩子函数对函数型组件进行增强 Hooks 允许
  • 7.2面试

    1 tcp ip四层模型是什么 应用层 运输层 网际层 物理层 网络接口层 网际层 传输层 应用层 tcp ip四层协议模型是对osi七层网络协议模型的简化 其中在tcp ip参考模型中去掉了osi中的会话层和表示层 合并为应用层 把ois
  • 手把手教你用Keil5新建STM32工程

    一 去Keil官网下载STM32芯片支持包 网址http www keil com dd2 pack 下载之后安装 这里的芯片支持包对应标准库的开发 二 去STM32社区下载STM32官方标准库 点击STM32社区网站https www s
  • 调试最长的一帧(第17天)

    先看看流程 电子书上介绍了渲染器osgViewer Renderer类 osgViewer Renderer为摄像机渲染场景的工作提供了一个公共接口 当我们向视景器viewer添加了一个新的摄像机camera时 一个与摄像机相关联的渲染器R