OSG 学习第一课:运行项目

一、搭建编译环境

我在网上找到一篇文章,按着步骤就能成功搭建:osg开发配置与第一个osg程序。大致步骤:

  1. 下载安装 VS2022
  2. 下载 osg3.6.5Vs2022X64 编译库
  3. 编写、编译并运行第一个 osg 程序

二、编译第一个 CMake C++程序

  • CMakeLists.txt 文件代码
project("learn_osg_01")
add_executable(${PROJECT_NAME} main.cpp)
  • main.cpp 文件代码
#include 
int main(int argc, char** argv)
{
    std::cout << "Hello, osg!" << std::endl;
    return 0;
}
  • 结果


    结果

三、编译第一个 OSG 程序

  • CMakeLists.txt 文件代码
#project()指令的作用是设置项目名称,并存放在变量PROJECT_NAME中,如果在顶层的CMakeLists.txt中调用此指令,会同时把项目名称存放在变量CMAKE_PROJECT_NAME中
project("learn_osg_01")

#我们要引入osg库,首先要告诉编译器库头文件的位置。在CMake中使用include_directories()指令实现。
set(OSG_DIR "E:\vs2022\osg3.6.5Vs2022X64")
include_directories(${OSG_DIR}/include)
link_directories(${OSG_DIR}/lib)

#add_executable()指令的作用是使用指定的源文件生成目标可执行文件,指令的第一个参数是要生成可执行文件(Windows系统中是exe文件)的名称,
#本例中会生成"learn_osg_01.exe",名字后边的参数是源文件列表,
#此例中目前只有一个源文件,即"main.cpp",如有多个源文件,要依次列在后边,用空格或换行隔开。
add_executable(${PROJECT_NAME} main.cpp)

#target_link_libraries()指令指定哪些库需要链接到目标上。本例的目标是最终要生成的exe文件,由上文中add_executable()指令指定,需要链接的库是osgd.lib和osgViewerd.lib。
target_link_libraries(${PROJECT_NAME} 
    osgd
    osgViewerd
    osgDBd
)

file(GLOB OSG_DLLS ${OSG_DIR}/bin/*.dll)
file(GLOB OSG_DLLS ${OSG_DIR}/bin/osgPlugins-3.6.5/*.dll)
file(COPY ${OSG_DLLS} DESTINATION ${CMAKE_BINARY_DIR})
  • main.cpp 文件代码
#include 
#include 

int main(int argc, char** argv)
{
    std::cout << "Hello, osg!" << std::endl;
    osg::ref_ptr viewer = new osgViewer::Viewer;
    viewer->setUpViewInWindow(50, 50, 800, 600);
    return viewer->run();
}
  • 效果图
OSG效果

四、出现的问题

  1. 运行OSG时目标还不能正常运行,因为找不到动态链接库,只能手动添加;解决方法:由于找不到osg130-osgDBd.dll,无法继续执行代码。重新安装程序可能会解决问题

参考文章

  • OSG-OpenSceneGraph在WIN10与VS2022下的部署(OSG3.6.5+VS2022+Win10_x64)个人笔记详细
  • osg开发配置与第一个osg程序
  • OSG 官方文档

你可能感兴趣的:(OSG 学习第一课:运行项目)