OSG第一个Demo
环境:Vs2010
OpenSceneGraph-3.0.1-VS10.0.30319-x86-debug-12741
OpenSceneGraph-3.0.1-VS10.0.30319-x86-release-12741
设置环境变量
PATH: D:\osg\bin
OSG_FILE_PATH: D:\osg\data
这时候你可以用osgViewer查看一下osg文件,比如经典的奶牛cow.osg
在命令行下输入:osgViewerd.exe cow.osg
新建一个vc空项目,设置vc++包含目录和库目录。vc2010是右击|属性|项目和解决方案|VC++目录,低版本是工具|选项|项目和解决方案|VC++目录
包含文件: D:\osg\include
库文件: D:\osg\lib
右击|属性|配置属性|链接器|输入|附加依赖项
OpenThreadsd.lib
osgd.lib
osgDBd.lib
osgViewerd.lib
如果编译Release版本,去掉d
新建main.cpp输入下面的代码,这次显示一个滑翔机。
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
void main()
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("glider.osg"));
viewer.realize();
viewer.run();
}
http://greatverve.cnblogs.com/archive/2012/09/19/osg-hello-world.html
编译出现的问题:d和非d的lib
过程中出现的问题:Microsoft C++ 异常 std::bad_alloc
0x7c812afb 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012f448 处的 std::bad_alloc。
原因:编译Debug版本的时候使用了不带d的Dll。
处理方法:
Demo编译成Debug版本使用带d的dll,编译成Release版本使用不带d的dll。
注意:
1. 编译Debug和Release版本需要分别设置项目属性中的包含目录文件和库目录。
2. 分别设置“链接器——输入——附加依赖项”,或者输入如下代码:
1 #ifdef _DEBUG
2 #pragma comment (lib,"OpenThreadsd.lib")
3 #pragma comment (lib,"osgd.lib")
4 #pragma comment (lib,"osgDBd.lib")
5 #pragma comment (lib,"osgFXd.lib")
6 #pragma comment (lib,"osgGAd.lib")
7 #pragma comment (lib,"osgManipulatord.lib")
8 #pragma comment (lib,"osgParticled.lib")
9 #pragma comment (lib,"osgShadowd.lib")
10 #pragma comment (lib,"osgSimd.lib")
11 #pragma comment (lib,"osgTerraind.lib")
12 #pragma comment (lib,"osgTextd.lib")
13 #pragma comment (lib,"osgUtild.lib")
14 #pragma comment (lib,"osgViewerd.lib")
15 #else
16 #pragma comment (lib,"OpenThreads.lib")
17 #pragma comment (lib,"osg.lib")
18 #pragma comment (lib,"osgDB.lib")
19 #pragma comment (lib,"osgFX.lib")
20 #pragma comment (lib,"osgGA.lib")
21 #pragma comment (lib,"osgManipulator.lib")
22 #pragma comment (lib,"osgParticle.lib")
23 #pragma comment (lib,"osgShadow.lib")
24 #pragma comment (lib,"osgSim.lib")
25 #pragma comment (lib,"osgTerrain.lib")
26 #pragma comment (lib,"osgText.lib")
27 #pragma comment (lib,"osgUtil.lib")
28 #pragma comment (lib,"osgViewer.lib")
29 # endif
作者:太一吾鱼水
文章未经说明均属原创,学习笔记可能有大段的引用,一般会注明参考文献。
欢迎大家留言交流,转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程