OSG中的HUD
OSG中的HUD
- 关闭光照,不受场景光照影响,所有内容以同一亮度显示
- 关闭深度测试
- 调整渲染顺序,使它的内容最后绘制
- 设定参考贴为绝对型:setReferenceFrame(osg::Transform:ABSOLUTE_RF)
- 使其不受父节点变换的影响:setMatrix(osg::Matrix::identity())
- 使用平行投影,设定虚拟投影窗口的大小,这个窗口的大小决定了后面绘制的图形和文字的尺度比例
创建
HUD
摄像机
osg
::
ref_ptr
<
osg
::
Camera
>
camera
=
new
osg
::
Camera
;
camera
->
setProjectionMatrix
(
osg
::
Matrix
::
ortho2D
(0, 1000, 0, 1000));
//
表示摄像机里的平面世界有多大
camera
->
setReferenceFrame
(
osg
::
Transform
::
ABSOLUTE_RF
);
camera
->
setViewMatrix
(
osg
::
Matrix
::
identity
());
camera
->
setClearMask
(
GL_DEPTH_BUFFER_BIT
);
camera
->
setAllowEventFocus
(
false
);
camera
->
setRenderOrder
(
osg
::
Camera
::
POST_RENDER
);
//
创建提示对象
m_prompt
=
new
osgText
::
Text
;
QFont
f
(
"
宋体
"
);
osgText
::
Font
*
font
=
new
osgText
::
Font
(
new
osgQt
::
QFontImplementation
(
f
));
m_prompt
->
setFont
(
font
);
m_prompt
->
setCharacterSize
(16);
m_prompt
->
setPosition
(
osg
::
Vec3
(0.0f, 10.0f, 0.0f));
m_prompt
->
setColor
(
osg
::
Vec4
(1, 1, 1, 1));
m_prompt
->
setDataVariance
(
osg
::
Object
::
DYNAMIC
);
m_prompt
->
setText
(
_conv
(
"
坐标
"
),
osgText
::
String
::
ENCODING_UTF8
);
osg
::
ref_ptr
<
osg
::
Geode
>
geode
=
new
osg
::
Geode
;
geode
->
addDrawable
(
m_prompt
);
osg
::
ref_ptr
<
osg
::
StateSet
>
stateSet
=
geode
->
getOrCreateStateSet
();
stateSet
->
setMode
(
GL_LIGHTING
,
osg
::
StateAttribute
::
OFF
);
stateSet
->
setMode
(
GL_DEPTH_TEST
,
osg
::
StateAttribute
::
OFF
);
stateSet
->
setMode
(
GL_BLEND
,
osg
::
StateAttribute
::
ON
);
camera
->
addChild
(
geode
);
OSG中的HUD的更多相关文章
- OSG中找到特定节点的方法
OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节 ...
- osg中遇到的问题
osg中遇到的问题 今天写程序的时候, 需要把键盘和鼠标消息转发出来, 就直接写了接口用signal丢出来了. 程序写的很多, 测试的时候却崩溃了.... 在场景中拖拽鼠标左键的时候, 会发现在扔出鼠 ...
- osg中的视点控制
osg中的视点控制 osg的视点控制基类是CameraManipulator, 它是一个虚基类, 有用的方法都跟home有关. 在这个类里面有三个重要的成员变量: osg::Vec3d _homeEy ...
- osg中使用MatrixTransform来实现模型的平移/旋转/缩放
osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html# ...
- OSG中的示例程序简介
OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...
- OSG中找到特定节点的方法(转)
OSG中找到特定节点的方法 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"] 阐述 ...
- OSG中的示例程序简介(转)
OSG中的示例程序简介 1.example_osganimate一)演示了路径动画的使用 (AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera ...
- OSG中相机参数的更改
#pragma comment(lib, "osg.lib") #pragma comment(lib, "osgDB.lib") #pragma commen ...
- osg项目经验1<MFC+OSG中模型点选效果>
点选主要是重载osg的GUIEventHandler, class CPickHandler : public osgGA::GUIEventHandler{ //自定义回调函数名:CPickHand ...
随机推荐
- c++ 子类调用父类构造方法 调用父类方法 类声明与实现分离
Person.h #pragma once #include "stdafx.h" #include<iostream> class Person { private: ...
- centos(x86 64位系统)使用boost
1. 安装gcc,g++,make等开发环境 yum groupinstall "Development Tools" 2. 安装boost yum install boost b ...
- php array_intersect() 和 array_diff() 函数
在PHP中,使用 array_intersect 求两个数组的交集比使用 array_diff 求同样两个数组的并集要快. 如果要求数组 $a 与数组 $b 的差集的个数,应该使用 count($a) ...
- hdu 4738 2013杭州赛区网络赛 桥+重边+连通判断 ***
题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥,使得这n座岛不连通,求最少要派多少人去. 处理重边 边在遍历的时候,第一个返回的一定是之前去的边,所以 ...
- 第一次尝试用 Live Writer 写博客
之前在官网上下载了最新版的Windows Live Writer,可是安装不了,就在其他网站下了一个试试,可以安装,不过却是2009年的版本,很不喜欢,我希望能体验最新版的,回头还得重新下个最新版的安 ...
- [荐]jquery插件开发入门
http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html $.fn.myPlugin = function() { //在这里面,this指 ...
- C# 对象转换为byte[] ,byte[]还原对象
/// <summary> /// 将一个object对象序列化,返回一个byte[] /// </summary> /// <param name ...
- 使用 json_in_java
// */ // ]]> java_in_json Table of Contents 1. Java 使用 Json 1.1. 下载地址: 1.2. 构造 json 字符串 1.3. 解析 j ...
- C#多线程编程总结
VS2008.C#3.0在WinForm开发中,我们通常不希望当窗体上点了某个按钮执行某个业务的时候,窗体就被卡死了,直到该业务执行完毕后才缓过来.一个最直接的方法便是使用多线程.多线程编程的方式在W ...
- JavaScript给onclick事件赋值,动态传参数实例辩错
错误的例子: <body> <input id="certid" type="text" value="123456" & ...