osg
文章平均质量分 64
dancing_night
不积跬步无以至千里,qq联系方式:821486004
展开
-
osg实现法线贴图
1、tbn计算原理第十三课:法线贴图2、顶点shader// vertex shaderuniform vec3 lightpos; //传入光源的坐标uniform vec3 eyepos;varying vec3 lightdir;varying vec3 halfvec;varying vec3 norm;varying vec3 eyedir; attribute vec3 rm_Tangent; void main(void){ vec4 pos = g原创 2022-01-18 14:37:12 · 1272 阅读 · 5 评论 -
osg相机渲染到多个纹理
#include <osgViewer/Viewer>#include <osgDB/ReadFile>#include <osg/Texture2D>#include <osgGA/TrackballManipulator>#pragma comment(lib, "osgd.lib")#pragma comment(lib, "osgDBd.lib")#pragma comment(lib, "osgGAd.lib")#pragma...原创 2021-04-08 11:59:01 · 823 阅读 · 0 评论 -
vpb生成地形
VPB生成三维地形1、下载dem来源有很多,我就写我用的地址:http://www.gscloud.cn然后选择dem下载:然后输入经纬度,找到想要下载的dem解压到目录存好2、下载卫片我是用水经注下的,目前手里没有狗,就下个低精度的示范下选好要下载的范围,可以输入:下载好后,选择导出,这里要注意导出的坐标系:手里可悲的是没有vip,所以只能导出墨卡托,不过没关系,可以用globalmapper转,转换方法如下:拖进gm,然后工具->设置-&原创 2020-09-16 15:47:42 · 952 阅读 · 1 评论 -
osg之源码跟踪-----Viewer::eventTraversal
1、概述此函数是事件遍历函数,主要做以下几件事:a、把设备+窗口的事件收集起来b、从SceneData开始遍历,给每个节点事件回调。getSceneData()->accept(*_eventVisitor);c、以每个从属相机为根遍历事件回调。d、调用主相机以及从属相机事件回调(不递归)e、遍历调用Viewer加的事件回调f、调用相机操作器回调g、设置相应状...原创 2020-04-30 10:46:42 · 377 阅读 · 0 评论 -
osg之源码跟踪-----ViewerBase::frame
1、概述此函数是渲染一帧的主函数,主要做的有以下几点:a、判断是否为第一帧,如果是则初始化。b、advance函数,主要做一些时间计算,设置诸如rate之类的状态值,其中Viewer::advance最后还会做对象注销工作,而CompositeViewer::advance不会做这个工作。c、eventTraversal时间遍历d、更新遍历e、渲染遍历2、示意流程图如下...原创 2020-04-28 15:58:21 · 542 阅读 · 0 评论 -
osg之源码跟踪-----Viewer::realize
1、概述 搞osg也有几年了,从来没系统的跟过代码,最近打算把代码好好跟一下。 今天跟踪的是Viewer::realize函数,此函数只初始化一次,过后不再初始化,主要干啥呢。 a、初始化窗口 b、初始化纹理最大尺寸和缓冲最大大小 c、设置开始时间 d、开启线程。 下面是流程图(不规范,看得懂意思就好...原创 2020-04-27 17:24:44 · 638 阅读 · 0 评论 -
osg+ffmpeg播放视频
1、概述原理很简单,ffmpeg负责解码,然后把解码的图像当做纹理贴到osg创建的场景中去,看代码。2、代码#include <osg/Billboard>#include <osg/Texture2D>#include <osgDB/ReadFile>#include <osgViewer/Viewer>#include &l...原创 2020-04-03 17:06:08 · 1226 阅读 · 0 评论 -
osg线碰撞检测
简介利用osgUtil::LineSegmentIntersector做的线碰撞检测,原理是把小球当前位置和新位置练成线与盒子做碰撞检测,如果有交点,则不准小球移动,记录于此备忘代码#include "../Common/Common.h"#include <osg/ShapeDrawable>#include <osg/Shape>#include <osgGA/GUIEventAdapte原创 2016-11-24 23:08:36 · 1684 阅读 · 0 评论 -
编译osgAudio遇到的'std::basic_ifstream<char,std::char_traits<char>>' : base class undefined
此问题是由于包含目录里的osgDB有自定义的ifstream和ofstream,和std标准库的冲突导致,造成此错误的原因是cmake配置include目录时,把各个模块(如osg、osgViewer、osgDB...)的目录设置为了分目录。解决方法很简单,cmake配置时,把每个模块目录路径都设置为osg的root目录则搞定。搞了我好几小时,真是汗颜啊~~~原创 2016-12-13 22:27:00 · 7115 阅读 · 0 评论 -
osg结合shader写的shadowmap
简介shadowmap示例,根据http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/教程用osg写的demo 原理在教程上说的很清楚了代码/**shadowmap示例,根据http://www.opengl-tutorial.org/intermediate-tutorials/tuto原创 2016-11-09 16:06:12 · 3511 阅读 · 3 评论 -
osg粒子
粒子系统(osgParticle::ParticleSystem)- 维护并管理一系列粒子的生成,更新,渲染和销毁。粒子系统类继承自Drawable类。粒子的渲染控制因此与其它Drawable对象的渲染类似:控制其渲染属性StateAttribute即可。OSG提供了一个方便的函数以允许用户控制三个常用的渲染状态属性。方法setDefaultAttributes可以用于指定材质(或者指定为NULL原创 2016-05-12 16:00:37 · 728 阅读 · 0 评论 -
osg实现透明效果 正解
最近某个项目中要用OSG画部分半透明效果的形状,绘制可参考OSG自带例子:Examples osggeometry 但是半透明效果一直出不来,google一番之后 有位热心网友提供的方案是: osg::StateSet* stateset = _geometryFeild->getOrCreateStateSet(); //Alpha混合开启 st转载 2016-02-03 15:53:39 · 1248 阅读 · 0 评论 -
OpenGL模板缓冲区---StencilBuffer
前言在OpenGL中存在着多种缓冲区,这些缓冲区大致分为: 颜色缓冲区:用于绘图的缓冲区,它包含了颜色索引或者RGBA颜色数据。 深度缓冲区:存储每个像素的深度值,当启动深度测试时,片段像素深度值和深度缓冲区深度值进行比较,决定片段哪些像素点数据可以替换到颜色缓冲区中。 模板缓冲区(Stencil Buffer):与颜色缓冲区和深度缓冲区类似,模板转载 2016-01-13 15:16:37 · 700 阅读 · 0 评论