VS2015+OSG3.6.1应用问题

如果参考了网上的其他文章,会发现测试需要将bin、data加入到环境变量以方便测试,个人不喜欢什么都加环境变量的这种方式。而且稍后建立的工程会手动添加这些库。

然而,最终还是妥协把bin目录添加进系统环境变量Path里了,确实是为了方便,原因稍后会讲到。

 

1. 样例测试

当然在这之前,将之前编译好的bin、include、lib都拷贝到根目录,顺带把测试数据Data也拷贝过来,只是为了方便找而已。

于是我得到了目录

E:\OSG\bin、 E:\OSG\include、 E:\OSG\lib、 E:\OSG\Data.

然后执行测试,测试主要用到bin目录下的程序,双击运行会发现都是一闪而过。没关系,打开cmd运行。

根据测试内容,我们运行osgversion.exe

其他的测试略过,比如osglogo,过程同理。

比较重要的是测试Data,主要通过osgviewer,只运行osgviewer.exe,则会出现帮助信息,看过之后,发现后面应该跟着osg数据文件,则加上Data文件里的随便一个文件,如常用的cow.osg

当然,也可以用osgviewerMFC.exe这个可视化见面更简单,也是用于打开osg文件的,这和我们昨天大致查看代码所得到的结论是一致的。也可以看到样例。操作过程 菜单栏File-Open-XX 你懂得

 

2. VS工程测试

这里很简单了,OSG源码中关于 osgview和osgviewerMFC给出了样例,可以分别参考工程Applications osgviewer和Examples osgviewerMFC参考写代码。这里做最简单的程序。

新建一个控制台程序,在项目属性-C++目录里添加包含目录E:\OSG\include,在库目录里添加E:\OSG\lib,写程序如下

// OSGTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>
#include <osgDB/ReadFile>

#pragma comment (lib,"osg.lib")
#pragma comment (lib,"osgDBd.lib")
#pragma comment (lib,"osgGAd.lib")
#pragma comment (lib,"osgViewerd.lib")

int main()
{
	osgViewer::Viewer viewer;
	viewer.addEventHandler(new osgViewer::WindowSizeHandler);	//使之可以按F缩小
	osg::Node* nSceneData = osgDB::readNodeFile("E:\\OSG\\Data\\cow.osg");
	viewer.setSceneData(nSceneData);
	int iRet = viewer.run();
	return 0;
}

运行即可出现图像(添加环境变量后)。

这里为什么妥协将bin目录添加进环境变量了呢,因为如果不添加,运行会出现错误“缺少osg160-XX.dll”,可以把这些缺失文件拷贝到exe同目录一样可以运行,但是为了方便还是把bin目录添加进环境变量了,记得重启计算机。至于项目要求。。。到时候再说吧。

  • 这里有一个不同点在于没有设置链接器,而在代码中实现了链接。怎么写呢?一个小技巧在于看报错的导出函数类名是什么,如下图,就可以通过 #pragma comment (lib,"osg.lib") 解决。如果不幸不是这个,结合源码在lib文件中找到对应的文件。至于这种写法相比较于设置链接器的优势,参考 https://www.cnblogs.com/xietianjiao/p/6425631.html

3. 读取其他格式文件

osgDB::readNodeFile()函数提供了打开其他格式文件的方法,结合对osgDB的插件机制的了解,如果能找到相应的dll,则证明可以打开该格式,这里我的dll存在于 E:\OSG\bin\osgPlugins-3.7.0 目录下,根据dll可以大致知道可以打开什么格式文件,当然也可以自己开发相应格式的dll。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值