#OSG+VS#01

来源:互联网 发布:php一句话木马 编辑:程序博客网 时间:2024/05/22 07:53

1.介绍osg::ref_ptr:

http://blog.sina.cn/dpool/blog/s/blog_99739a6201013zk5.html

简单总结:

①智能指针,指的是一种类的模板,针对某一特定类型的对象(即Referenced类及其派生类)构建,使用智能指针模板osg::ref_ptr<class T>来定义类的实例,用户的类必须派生自Referenced类。

为用户提供了一种自动内存释放的机制,即,场景图形中的每一个节点均关联一个内存计数器,当计数器的计数减到零时,该对象将被自动释放。避免造成部分内存空间被浪费的后果,也就是所谓的内存泄露错误。

在OSG中,不使用智能指针而是用形如osg::Node * node的声明方式也是可以的。但是在大型程序中,应当尽量统一使用智能指针来进行内存的管理。此外,有的时候没有统一使用ref_ptr的话,程序也可能出现问题。

BUT……

在“2-3绘制正方形”的示例程序中,我将主函数中创建viewer的语句改为ref_ptr形式后,最后三句报错:““setSceneData”: 不是“osg::ref_ptr<T>”的成员”。

这是因为:修改后viewer是个指针,只能通过“->”调用。“.”用来调用对象中的成员变量。

【这么基础的问题==哎,基础不扎实……一点点记录吧】


2.介绍addPrimitiveSet:

addPrimitiveSet函数用来设置绘制的几何图形。
DrawArrays 类的构造函数为osg::DrawArrays::DrawArrays ( GLenum  mode,  GLint  first,  GLsizei  count ) ,mode是几何图形的类型,first是顶点数组中的起始数据的数组下标,count是数据的个数。

3.透明纹理与材质。
自定义绘制的模型可以使用透明的颜色,在材质的混合光中采用透明的颜色,在绘制模型时开启透明模式。
从外部导入的模型,部分模型可以使用和自定义模型一样的方法设置透明;但很多模型无法通过材质设置实现透明效果,用BendFunc方法。


碎碎念:
目前只敲了自定义的示例代码,明天先改变光照中的参数大小,对比区别,了解函数的意义。然后接着敲后面的咯。
师兄上次终于问了一次有用的“你在干嘛”,然后叫我先不学Qt,先跟着这本《OpenSceneGraph3.0三维视景仿真技术开发详解》学OSG,这本书真的很好,我都想自己买一本了,不知道以后用不用得上。

我当然不是个自闭的人,从内心也是很崇拜师兄的。只是看着大家都忙得很高端,不知如何开启对话,不知谈什么内容合适。不知道是不是因为上次提醒师兄下雨带伞,还是本来师兄师姐都是乐于助人的只要我问,不论因为哪个,都挺开心。

敲代码也很开心,心里有点小期待,希望能把OSG学好。加油!

2 0
原创粉丝点击