2009-6-24 17:23:23 阅读403 评论1 242009/06 June24
为方便工作需要,特开设此贴,将不断更新
1、地球背面的一个点,计算它在屏幕上的坐标,能得到吗? 不是被挡住了吗?
答:计算一个空间点的屏幕坐标,使用osgAPEx::GetScreenPosition函数。当空间点处于相机视空间内(不管它是否被别的物体遮挡)时,都是可以得到它对应的屏幕坐标的。
如何判断一个点是否在地球背面?可以通过计算该点处垂直地面的方向UP,与相机方向的夹角,如果夹角为锐角,则可认为该点在地球背面。计算地球上任意点的UP方向使用osgAPEx::ComputeLocalUpVector。
2、OSG中可以播放视频吗?
答:可以使用quicktime插件或ffmpeg插件在OSG中播放视
2010-12-7 16:33:51 阅读200 评论0 72010/12 Dec7
void
__stdcall
OutputDebugStringA(
const char* lpOutputString
);
void
__stdcall
OutputDebugStringW(
const wchar_t lpOutputString
);
使用起来非常简单,只有一个参数而且没有返回值.
2010-10-28 13:27:49 阅读157 评论0 282010/10 Oct28
烘培是指,把光照信息渲染成贴图,而后把这个烘培后的贴图再贴回到场景中去的技术。烘培技术把光照计算的结果提前写入到了贴图中,因此在实时渲染中不需要进行耗时的光照计算,大大提高了实时渲染的效率。
由于烘培的光影效果是提前渲染到贴图中的,因此烘培的光影效果是静态的,这与实时渲染的光影效果是不同的,它不能随着环境光照的改变而变化。并且由于贴图已经包含光影信息,如果再对该物体启用光照计算,则会出现贴图中的光影与实时计算光影间产生冲突,所以应对烘培后的物体关闭光照计算。
Max中的烘培方式有两种,CompleteMap和LightingMap。CompleteMap把光影信息和源纹理一起渲染到一张新的贴图中,最终用于实时渲染的只有这一张贴图,但是由于光影贴图不能使用REPEAT的纹理环绕模式,所以整个纹理必须被平铺,这样在目标贴图大小一定的情况下,任何局部都会变得
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-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 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-1-8 17:19:12 阅读305 评论0 82010/01 Jan8
Visitor模式也叫访问者模式,是由GoF提出的23种软件设计模式的一种。Visitor
2010-1-2 21:04:36 阅读126 评论1 22010/01 Jan2
PHP套件是集成了PHP运行环境所需的各种工具形成的一类安装包,通常只需要执行一个安装文件和进行简单的配置(或不需要配置)就可以完成PHP环境的搭建。是PHP开发新手和懒人的不二选择。
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-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.