OSG开发环境配置指南及第一个OSG程序的详细步骤

2026-02-08 0 248

在编程领域,osg开源图形库对那些想制作图形软件的开发者来说,确实是个很有帮助的工具。然而,对于新手来说,配置它的开发环境以及编写第一个程序的过程,往往充满了挑战。

开发环境准备基础

OSG开发环境配置指南及第一个OSG程序的详细步骤

osg项目的开发需要依赖CMake这一功能强大的工具。CMake是一款支持多平台且开源的元构建系统,在C/C++项目的源码构建中应用广泛。许多大型C/C++项目都借助CMake来创建make、ninja等构建系统的脚本。在实际操作中,CMake会根据用户在.txt文件中编写的指令来构建工程。据数据显示,大约有60%的C++图形项目开发团队使用CMake等构建工具。我们必须认识到,从国内某大型开发公司的经验来看,正确运用构建工具可以显著提升开发效率。

OSG开发环境配置指南及第一个OSG程序的详细步骤

在VS安装过程中,容易出现问题。安装时,务必留意勾选的项目。特别是“用于的C++ CMake工具”和“MSVC V142 – VS 2019 C++ x64/x86生成工具”这两个选项。若要支持CMake项目,必须勾选“用于的C++ CMake工具”。而本文所用的osg库是经过编译的,还需兼容2019编译的库,因此还需勾选“MSVC V142 – VS 2019 C++ x64/x86生成工具”。

OSG开发环境配置指南及第一个OSG程序的详细步骤

OSG开发环境配置指南及第一个OSG程序的详细步骤

目录与实用工具文件放置

OSG开发环境配置指南及第一个OSG程序的详细步骤

在项目里,bin文件夹扮演着关键角色。它主要负责存放可执行的二进制文件,比如大家熟知的exe和dll文件。像“模型/场景查看器”和“格式转换工具”这样的实用工具,就是存放在这里的。这就像是一个存放各种工具的仓库。这些exe和dll文件是程序运行的基础。另外,还有一种特殊情况,当进行某些操作后,会发现某个目录下新增了“.vs”和“out”两个文件夹。这里的“.vs”文件夹主要用于生成VS的项目配置和缓存文件。这就像VS在为项目找一个专门的小房间来存放东西。而且这个“.vs”文件夹是由VS自动管理的,我们开发者基本上不用过多关注,甚至可以在关闭工程时将其删除,因为再次打开VS时,它会自动重新创建。

OSG开发环境配置指南及第一个OSG程序的详细步骤

#include 
int main(int argc, char** argv)
{
	std::cout << "Hello, osg!" << std::endl;
	return 0;
}

编译与运行设置

project(\"learn_osg_01\")
add_executable(${PROJECT_NAME} main.cpp)

有了前面的准备工作,我们便可以开始编译并运行C++源代码了。对于熟悉C++项目的开发者来说,在VC++项目中利用图形界面来配置库是相当便捷的。在配置过程中,有一个关键指令,它指示编译器查找头文件的路径,需要将相关目录添加到属性设置中。在本例中,我们的目标是生成最终的exe文件,这由之前提到的特定指令来决定。此外,这里需要链接的库包括osgd.lib和另一个.lib库。完成这些设置后,CMake库的配置基本上就初步完成了。然而,有些开发新手可能会不小心遗漏某个步骤,这会导致程序无法编译或运行出错。在某个开发论坛上,就有许多这样的新手提出了类似的问题。

OSG开发环境配置指南及第一个OSG程序的详细步骤

编译过程中,需在VS界面的菜单里选择“生成”下的“全部生成”选项,随后VS将自动启动相应工具创建.exe文件。完成这一步后,轻点F5键即可启动调试。若操作无误,控制台将显示“Hello, osg!”这一表示操作成功的标志性信息。

project(\"learn_osg_01\")

add_executable(${PROJECT_NAME} main.cpp)

CMake文件的进一步完善

include_directories(\"E:/osg/OpenSceneGraph-3.6.5-VC2019-64-Debug/include\")

初步设置完毕后,为了便于项目的维护和优化,我们必须对CMake文件进行进一步优化。我们注意到,之前的指令中多次引用了osg库的根目录。为了提高效率,我们建议使用set指令将osg库的根目录设置为一个变量。这样一来,在后续的文件中,若需要再次使用该目录,只需直接引用这个变量即可。否则,若未采取此措施,在后续修改目录时,开发者将不得不逐一查找并修改所有引用该目录的地方,这无疑会带来极大的不便。

file指令是个实用工具。它能自动将源目录下的所有.dll文件复制到目标目录。只需在.txt文件里添加两条与这两个指令相关的指令,并保存,CMake便会自动执行文件复制。这样,当我们按下F5启动程序,离成功就又近了一些。

link_directories(\"E:/osg/OpenSceneGraph-3.6.5-VC2019-64-Debug/lib\")

target_link_libraries(${PROJECT_NAME} 
	osgd
	osgViewerd
)

程序最终运行准备

在完成前期操作后,为了让程序顺畅且无误地执行,我们必须加入osgDB库。这好比为建筑增建支柱,若缺少此库,我们的osg程序将无法正常运行。此外,还需将插件库中的png文件读写插件dll文件复制到可执行文件所在的同一目录。若此步骤被忽略,png相关内容可能无法正确显示或处理,进而影响程序的视觉效果或数据处理。

project(\"learn_osg_01\")
set(OSG_DIR \"E:/osg/OpenSceneGraph-3.6.5-VC2019-64-Debug\")
include_directories(${OSG_DIR}/include)
link_directories(${OSG_DIR}/lib)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} 
	osgd
	osgViewerd
)

我想请教各位,在搭建osg开发环境或编写首个osg程序的过程中,大家面临的最大挑战是什么?期待大家在评论区交流心得,同时,也欢迎点赞并转发这篇文章。

#include 
#include 
int main(int argc, char** argv)
{
	std::cout << "Hello, osg!" << std::endl;
	osg::ref_ptr viewer = new osgViewer::Viewer;
	return viewer->run();
}

首个osg程序成功运行

完成所有步骤后,再按F5启动程序。若之前的设置和操作都准确无误,此时将出现一个全屏的osg窗口。这表明首个osg程序已顺利启动。从搭建开发环境到程序成功运行,尽管过程繁杂,但每一步都至关重要。这一过程让我们见证了osg程序从无到有的创作历程,包括对工具的熟练运用和对代码及文件处理的技巧。成功开发首个osg程序的开发者分享经验时表示,这就像穿越了一段充满挑战且收获颇丰的旅程。

OSG开发环境配置指南及第一个OSG程序的详细步骤

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 OSG开发环境配置指南及第一个OSG程序的详细步骤 https://www.zuozi.net/77704.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务