显示下一条  |  关闭

简单生活

快乐地成长,简单地生活,勤奋地工作...

 
 
 
 
 
 

北京市 朝阳区

 发消息  写留言

 
快乐地成长,简单地生活,勤奋地工作...
 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 

日历

 
 
模块内容加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
 
 
 
 
下载音乐盒  曲目表歌词秀
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
 

[置顶] OpenSceneGraph FAQ

2009-6-24 17:23:23 阅读403 评论1 242009/06 June24

为方便工作需要,特开设此贴,将不断更新

1、地球背面的一个点,计算它在屏幕上的坐标,能得到吗? 不是被挡住了吗?

答:计算一个空间点的屏幕坐标,使用osgAPEx::GetScreenPosition函数。当空间点处于相机视空间内(不管它是否被别的物体遮挡)时,都是可以得到它对应的屏幕坐标的。

如何判断一个点是否在地球背面?可以通过计算该点处垂直地面的方向UP,与相机方向的夹角,如果夹角为锐角,则可认为该点在地球背面。计算地球上任意点的UP方向使用osgAPEx::ComputeLocalUpVector。

 

2、OSG中可以播放视频吗?

答:可以使用quicktime插件或ffmpeg插件在OSG中播放视

作者  | 2009-6-24 17:23:23 | 阅读(403) |评论(1) | 阅读全文>>

OutputDebugString API函数包括MultiChar和Unicode两种版本:OutputDebugStringA和OutputDebugStringW,原型:如下:

void
__stdcall
OutputDebugStringA(
    const char* lpOutputString
    );


void
__stdcall
OutputDebugStringW(
   const wchar_t lpOutputString
    );

使用起来非常简单,只有一个参数而且没有返回值.

 

作者  | 2010-12-7 16:33:51 | 阅读(200) |评论(0) | 阅读全文>>

烘培技术

2010-10-28 13:27:49 阅读157 评论0 282010/10 Oct28

烘培是指,把光照信息渲染成贴图,而后把这个烘培后的贴图再贴回到场景中去的技术。烘培技术把光照计算的结果提前写入到了贴图中,因此在实时渲染中不需要进行耗时的光照计算,大大提高了实时渲染的效率。

由于烘培的光影效果是提前渲染到贴图中的,因此烘培的光影效果是静态的,这与实时渲染的光影效果是不同的,它不能随着环境光照的改变而变化。并且由于贴图已经包含光影信息,如果再对该物体启用光照计算,则会出现贴图中的光影与实时计算光影间产生冲突,所以应对烘培后的物体关闭光照计算。

Max中的烘培方式有两种,CompleteMap和LightingMap。CompleteMap把光影信息和源纹理一起渲染到一张新的贴图中,最终用于实时渲染的只有这一张贴图,但是由于光影贴图不能使用REPEAT的纹理环绕模式,所以整个纹理必须被平铺,这样在目标贴图大小一定的情况下,任何局部都会变得

作者  | 2010-10-28 13:27:49 | 阅读(157) |评论(0) | 阅读全文>>

OSG静态编译

2010-7-28 15:56:08 阅读334 评论0 282010/07 July28

搞了大半天,终于用静态编译的方式把OSG核心库、IVE插件和一个sample程序编译成功了,期间遇到一些问题,在此记录下来。

1.OSG的CMake工程支持使用动态链接和静态链接两种方式编译OSG库, 所使用的两个开关是DYNAMIC_OPENSCENEGRAPH和DYNAMIC_OPENTHREADS,如下图:

要想静态编译OSG库,首先需要确保这两个开关不被勾选。

2.配置好CMake工程,生成VC工程后,需要对工程配置做一些手动修改。

1)修改所有工程的配置类型(Configuration Type)为静态库(Static Library (.lib)),这一步CMake已经做了。

2)修改所有工程的运行时库(Runtime Library)为MT或MTd。

作者  | 2010-7-28 15:56:08 | 阅读(334) |评论(0) | 阅读全文>>

OSG序列化实现初窥

2010-7-27 14:58:53 阅读96 评论0 272010/07 July27

在2.9.7版本中,OSG推出了一个新的场景树保存机制--序列化,它是可扩展的,能够支持用户自定义的节点数据的保存。同时推出了新的本地数据格式,osgb和osgt。

了解任何程序实现的最直接方式,无疑是看它的代码。但初看OSG序列化的实现代码,一系列新的概念和一个个的宏定义,顿时让我有点云里雾里。不过耐心看下去,其实逻辑很简单。

首先理解几个重要概念:

Wrapper:可以理解为对象序列化功能的提供者,每一个需要序列化(即保存到文件)的对象都需要有一个对应的wrapper,wrapper具体由osgDB::ObjectWrapper类实现,通过REGISTER_OBJECT_WRAPPER宏完成每个wrapper对象的注册。

Serializer:具体的变量的序列化功能提供者,系统预定义了布尔形、整形、矩阵、向量等变量的

作者  | 2010-7-27 14:58:53 | 阅读(96) |评论(0) | 阅读全文>>

标准C++流常用格式化操作符

2010-7-27 9:53:11 阅读58 评论0 272010/07 July27

ios库中定义了许多操作符,用于指定流输出中的数据格式,如:

booalpha\noboolalpha:指示以true、false还是1、0来输出bool值。缺省noboolalpha生效。

dec\hex\oct:分别指示以10进制、16进制、8进制输出整形数。缺省以10进制输出。

showpos\noshowpos:指示是否输出正数的正号。

.......

作者  | 2010-7-27 9:53:11 | 阅读(58) |评论(0) | 阅读全文>>

读OSG学设计模式--visitor模式

2010-1-8 17:19:12 阅读305 评论0 82010/01 Jan8

Visitor模式也叫访问者模式,是由GoF提出的23种软件设计模式的一种。Visitor

作者  | 2010-1-8 17:19:12 | 阅读(305) |评论(0) | 阅读全文>>

PHP套件

2010-1-2 21:04:36 阅读126 评论1 22010/01 Jan2

    PHP套件是集成了PHP运行环境所需的各种工具形成的一类安装包,通常只需要执行一个安装文件和进行简单的配置(或不需要配置)就可以完成PHP环境的搭建。是PHP开发新手和懒人的不二选择。

作者  | 2010-1-2 21:04:36 | 阅读(126) |评论(1) | 阅读全文>>

读OSG学设计模式--observer模式

2009-12-31 12:28:58 阅读181 评论0 312009/12 Dec31

 观察者模式(Observer)是一种常见的设计模式,它完美的将观察者和被观察的对象分离开,以松耦合的方式建立一种“观察”的逻辑关系,当被观察者发生改变的时候,观察者就会观察到这样的变化,并且做出相应的响应。

OSG对观察者模式的实现,建立在以下两个类的基础上:

观察者基类:
class Observer
{
    public:
    virtual ~Observer() {}
    virtual void objectDeleted(void*) {}
};

被观察者基类:
class OSG_EXPORT Referenced
{
public:

作者  | 2009-12-31 12:28:58 | 阅读(181) |评论(0) | 阅读全文>>

OpenGL纹理压缩

2009-12-28 16:22:22 阅读657 评论0 282009/12 Dec28

OpenGL支持两种纹理压缩技术:ARB纹理压缩扩展 & S3纹理压缩扩展(S3TC)

表1是ARB纹理压缩扩展的压缩格式与原始纹理格式的对照:

Table 1: Generic compressed internal formats and their corresponding uncompressed input format.

作者  | 2009-12-28 16:22:22 | 阅读(657) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
日志评论
评论列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注