OSG 基础 Hello World 程序编写

本文介绍了如何使用OSG进行程序设计,包括环境搭建、所需工具介绍及简单的HelloWorld示例程序解析。通过本文,读者可以了解如何配置开发环境并运行第一个OSG程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开源共享原则

        此文章参考至 OSG程序设计-杨石兴。转载请附带出处

一 安装下载

osg 环境配置 请参考此链接按照步奏完成配置OSG详细安装步奏下载链接 ,此外还需要两个东西一个是cmake,用来配置osg,一个是番茄助手用来在vs下提高开发效率,哈哈大笑用过都说好,这里我提供一个百度云链接方便下载链接:云盘链接 密码:9xr1

二 Hello World 编写

一 新建一个控制台程序,然后输入下面代码

1.#include <osgDB/ReadFile> 
2.#include <osgViewer/Viewer> 
3.void main() 
4.{ 
5.     osgViewer::Viewer viewer; 
6.     viewer.setSceneData(osgDB::readNodeFile("glider.osg")); 
7.     viewer.realize(); 
8.     viewer.run();  
9.}

记得要配置项目的属性 有两个一个是include目录 一个是lib目录,连接器依赖性也需要,具体过程在详细安装步奏里。

此时运行起来就可以看到一个小飞机了如图


下面首先来逐行来解释整个程序: 
 
第 1~2 行:这里是包含头文件,可以打开 OSG 的安装目录,发现应该存在 osgViewer 和 osgDB 的文件夹,
                而 ReadFile 和 Viewer 都是其中的头文件。这里要说一下,一般需要头文件与对应库和动态链接DLL 就
                可以编译了,不需要 CPP 文件,头文件是说明库文件和 DLL 的。 
第 3 行:主函数,这里主函数还没有任何的参数。 
第 4~5 行:这里申请了一个 viewer,这里要解释一下,为什么要 osgViewer::Viewer,   osgViewer 是名字空间,
                与 std::的地位是一样的,关于名字间是 C++防止重名的很重要的一个机制,从而使程序看起来井井有条。
                这里你可以理解为申请一个观察器,该观察可以查看模型就可以了,在现实中我们也是叫Viewer 的。
                比如,你的 Viewer 写的有问题,用 Viewer 等等打招乎语。注意这里申请的并非一个指针,而实是一个
                对象实体。
 
第 6 行:这里是设置观察器 Viewer 中的数据,换句话说,有了观察器,  得可以年模型呀,模型中要以含有
            路径,比如 viewer.setSceneData(osgDB::readNodeFile("C://glider.osg"));表示打开 C 盘根目录下的该模型。
            其中//为转义字符,编译器会识别为/,从某种意义上讲,我个人从来不把文件夹设置为中文名,OSG
            对中文支持的可不是很好。所以最好不用要中文路径名,还有就是有空格的路径名,最好也不用,不
            要让这些无所谓的东西干扰你。 
第 7 行:这个语句表达的意思非常多,事实上可以定位到 Viewer.cpp 的第 377 行,会发现里面的操作非常
            多,可以理解为这是在渲染前的最后一步,会检查和设置图形上下文,屏幕啊什么的,会让你以前的
            设置,对 Viewer 的设置都生效。 
第 8 行:这一句的意思就是渲染了,如果要解释它的意思的话,可以用下面的几个语句来替代:
            while(!viewer.done()){viewer.frame();}.意思也就是说,只要 viewer 没有结束,那么就绘制它的每一个帧
            [frame]。 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值