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

2023-10-30

先看看总体进展,

eventTraversal函数的任务:在每帧仿真过程中,取出已经发生的所有事件,摒弃哪些对场景不会有助益的(比如, 在视口外的鼠标事件),依次交付给各个事件处理器,最后清空现有的事件队列,等待下一帧的到来。

 

在View的几个成员变量中,

_eventHandler处理由图形设备传递到事件队列_eventQueue的各种事件。

 

添加事件处理器由View::addEventHandler添加,

事件处理器可以通过继承事件处理器基类osgGA::GUIEventHandler,重写handle()函数,实现自定义的交互事件相应流程。

 

调试进去看看

 

 

 

 

 

 

窗口坐标 = 世界坐标*摄像机坐标系*投影坐标系*窗口坐标系;

 

分开来,就是

摄像机坐标 = 世界坐标* 摄像机坐标系;

投影坐标 = 摄像机坐标 * 投影坐标系

窗口坐标 = 投影坐标 *窗口坐标系.

 

 

osg的事件队列是由一个GUIEventAdapter事件组成的链表,比如鼠标移动,按键按下,窗口尺寸等动作,都会作为一个新的GUIEventAdapter对象插入到链表中,(

比如,mouseMotion,keypress和windowResize,并间接地调用EventQueue::addEvent函数,而这些事件之间可能共通的参数和状态就从“状态事件”中读取,比如鼠标移动时,鼠标坐标XY就是状态事件,可以在不同的事件中更新坐标,然后传递。

 

 

 

 

 

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

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

  • 调试最长的一帧(第27天)

    对于几个多线程渲染中的成员变量 继续抄一抄 Block阻塞器 BlockCount 计数器类 它与阻塞器类的使用方法基本相同 block 阻塞线程 release 释放线程 不过除此之外 BlockCount的构造函数还可以设置一个阻塞计数
  • 第二天(七)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(十四)PrerenderOrder的使用

    由于前面是简单的demo 所以不用管渲染次序 然而 实际项目中 会出现多种渲染方式 这时候就要用到 camera gt setRenderOrder osg Camera PRE RENDER 还要加上具体次序 比如 采样摄像机设为2 处理
  • 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的几个成员
  • SingleThreaded是如何进入cull_draw()的?

    正如以前所说 单线程模式是通过cull draw 进行剔除绘制的 如何进入的呢 其实很简单 逆推下 最后 回到梦开始的地方
  • 调试最长的一帧(第22天)

    先看看全流程 先抄一抄节点访问器NodeVisitor的工作原理 当我们执行节点的accept NodeVisitor nv 函数时 当前节点自动调哟个NodeVisitor apply方法 将自身的信息传递给节点访问器nv 由它负责执行相
  • 调试最长的一帧(第12天)

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

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

    电子书上给了个例子 抄一抄 加深下印象 也验证下以前的想法对不对 对于场景实例 其中 ss 加上数字代号来标识这些Stateset对象 后面括号中的两个参数分别表示setRenderBinDetails的两个设置项 表示空字串 R 表示 R
  • 调试最长的一帧(第14天)

    看看流程 可见分页数据库的更新也是和场景的筛选绘制是同时进行的 再看看大图 第14天要进行左下角的 依照惯例 跟过去 现在开始步入正轨 发现第0个fileName为空 这是有问题的 创建pagelod时修正为 这次进来了 在这里删除 放入r
  • 第二天(八)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为止
  • 调试最长的一帧(第三天)

    先看看整体 以及进度 第三天的内容 主要讲根据窗口参数建立图形上下文设备 建立一个全屏显示的图形设备 这个WindowingSystemInterface是纯虚基类 也就是下一步就要父类调用子类了 获取或新建显示设置 各成员变量 成员变量的
  • osg+shader光照半透明

    先记录下 免得时间久了忘了 对于光照 光源有点光源 聚光灯 方向光 每种光源又有ambient diffuse specular emission几个属性 这里用点光源 不考虑衰减 1 diffuse是入射光与物体法线之间的余弦起作用 2
  • 调试最长的一帧(第21天)

    看看全流程 主要讲sceneview cull 跟过去 重点在cullstage 状态树与渲染树的构建都是在pushStateSet和popStateSet函数中完成的 而CullVisitor apply函数 在遍历节点时调用 则负责根据
  • 调试最长的一帧(第十天)

    依照惯例 先看总体流程 到了更新回调 一边抄一边记忆 OSG更新回调的作用与事件回调有类似之处 由专门的访问器对象 updateVisitor负责场景图形更新遍历 所有的节点和Drawable几何体对象都可以使用setUpdateCallb
  • osg fbo(四),将颜色缓冲区图片中的牛通过shader变绿

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

    看看总体进度 第22天通过CUllvisitor创建了渲染树和状态树 并进行必要的剔除 接下来进行排序和优化 RenderStage sort函数时按照前序渲染台 当前渲染台和后续渲染台的顺序进行 其中前序渲染台和后续渲染台通过Camera

随机推荐

  • Consul注册中心显示红叉 (All service checks failing)

    Consul注册中心显示红叉 All service checks failing 错误原因 心跳机制没有打开 所以健康检查总是报红 解决方法 在 application properties 添加以下配置 打开心跳机制 spring cl
  • 【Windows】composer安装与设置

    1 到官网下载 composer phar 下载地址 Composer 2 将下载的composer phar 复制到 composer 文件夹中 3 在composer文件夹中新建文件 composer bat 内容为 php dp0co
  • 故障诊断学基础知识

    1 机械故障诊断涉及哪些学科 做哪方面的科学研究 包含了哪些技术 形成了哪些方法 解决什么工程问题 1 涉及的学科有 机械 力学 电子 计算机 信号处理 人工智能等 2 机械故障诊断是研究机器或机组运行状态的变化在诊断信息中的反映 因此包括
  • python操作XML格式文件

    python操作XML格式文件 python操作XML格式文件 1 读取文件和内容 2 读取节点数据 3 修改和删除节点 4 构建文档 python操作XML格式文件 可扩展标记语言 是一种简单的数据存储语言 XML被设计用来传输和存储数据
  • Java poi+excel导入

    用的SSM框架 所需要的jar包如图所示 链接地址 jar包下载 下面直接上代码 1 ExcelUtil工具类 span style color 993399 span style font size 18px color 993399 i
  • java推荐使用枚举定义常量

    假如有一笔业务需要审核 审核状态分 未审核 审核中 审核通过 审核不通过 我们在程序里是否可以直接这么写 if state 1 1代表未操作 操作 else 将状态标识直接写在代码里面 硬编码 只图一时方便 却是后患无穷 如果有一天你需要修
  • springboot整合mybatis之一:mapper.xml文件位置

    server port 8080 spring datasource url jdbc oracle thin localhost 1521 orcl driver class name oracle jdbc driver OracleD
  • Node.js 的理解、优缺点、应用场景

    一 是什么 Node js 是一个开源与跨平台的 JavaScript 运行时环境 在浏览器外运行 V8 JavaScript 引擎 Google Chrome 的内核 利用事件驱动 非阻塞和异步输入输出模型等技术提高性能 可以理解为 No
  • 找了个UE4兼职

    这两周面试时 发现ue4岗位给的薪水不高 主要是没全职经验 其实是有三个月全职经验的 没法往上面写 免得说 你试用期咋没过 前天面试时 技术聊的很融洽 又到了谈薪资的时候了 面试官说 Ue4培训出来的都是一万 我说 那贵公司这个岗位其他人一
  • pytorch官方教程训练分类器代码理解

    pytorch官方教程训练分类器代码理解 新手的代码熟悉 有错误请大佬指出 通常 当您必须处理图像 文本 音频或视频数据时 您可以使用标准的python包将数据加载到numpy数组中 然后你可以将这个数组转换成一个torch Tensor
  • Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)

    1 简介 前置处理器是在发出 取样器请求 之前执行一些操作 如果将前置处理器附加到取样器元件 则它将在该取样器元件运行之前执行 前置处理器最常用于在取样器请求运行前修改其设置 或更新未从响应文本中提取的变量 前置处理器主要是用来处理请求前的
  • ChatGLM-6B部署、实战与微调

    文章目录 摘要 下载chatglm 6b 下载模型文件 推理 代码调用 网页版的Demo 网页版的Demo2 命令行 Demo 部署 API部署 低成本部署 模型量化 CPU 部署 Mac 部署 多卡部署 训练与微调 软件依赖 下载数据集
  • Python的人脸识别设计史上最全的教程,手把手教(附源代码)

    首先要下载人脸识别模块 win R后输入cmd在控制台下载 先是读取图片功能 导入OpenCV模块 import cv2 as cv 读取图片 参数 图片路径 注意 路径中不能有中文 否则图片加载失败 img cv imread pictu
  • mysql show 命令_MySQL基础:show命令

    Blog 博客园 个人 show命令 show命令可以提供关于数据库 表 列 或关于服务器的状态信息 总结 显示二进制文件以及文件大小 需要开启二进制日志记录功能 SHOW BINARY MASTER LOGS 显示二进制文件的执行过程 S
  • 目标检测:特征金字塔网络(Feature Pyramid Network)

    目标检测 特征金字塔网络 Feature Pyramid Network 概述 核心思想 概述 由于在目标检测任务中 对与大目标的检测 需要feature map每个点的感受野大一点 高层语义特征 对于小目标 需要感受也小一点 底层纹理特征
  • Android 反编译

    解压缩Apk 将需要破解的Apk的后缀修改为zip 然后解压缩 可以得到assets文件 res资源文件 AndroidManifest xml配置文件以及一个classes dex文件 如下图 其中classes dex文件在这里插入图片
  • 推荐算法:基于图的算法:基于路相似度

    图中两个节点的距离 通过计算 用于连接两个节点的路径的数目和这些路径的长度所构成的函数来获得
  • virtualbox 不小心卸载后。。。

    PHP laravel 的虚拟开发环境 vagrant Homestead 配置挺麻烦 但如果 不小心卸载了virtualbox 你会遇到另外 一个麻烦 尝试重新安装virtualbox 装好后 运行vagrant up 你以为会一切如初
  • XSS漏洞的分类

    XSS漏洞按照攻击利用手法的不同 有以下三种类型 类型A 本地利用漏洞 这种漏洞存在于页面中 客户端 脚本自身 其攻击过程如下所示 Alice给Bob发送一个恶意构造了Web的 URL Bob点击并查看了这个URL 恶意页面中的JavaSc
  • 调试最长的一帧(第七天)

    先看看总体进展 eventTraversal函数的任务 在每帧仿真过程中 取出已经发生的所有事件 摒弃哪些对场景不会有助益的 比如 在视口外的鼠标事件 依次交付给各个事件处理器 最后清空现有的事件队列 等待下一帧的到来 在View的几个成员