前言

  在国产麒麟系统上实现C++三维仿真,使用OSG技术,其他基于web的技术也是可以但是交互上鼠标拽托等交互相对差一些,所以这块需要斟酌选择到底是何种技术来取舍。
  本篇在厂家指定的麒麟系统上编译OSG。

 

环境

  • 系统版本:银河麒麟桌面操作系统V10(SP1)(注意:不对外提供)
  • Gcc版本:gcc (Ubuntu 9.3.0-10kylin2) 9.3.0
  • Qt版本:qt5.12.8
  • OSG版本:osg3.4.0
  • Cmake版本:cmake3.16.3
 

安装Qt

  Qt是基于Qt5.12.8版本的,自行下载linux安装linux版本,参照《[麒麟系统开发笔记(二):国产麒麟系统搭建Qt开发环境安装Qt5.12]》

 

OSG开发系列博客

  [OSG、OSGEARTH三维开发专栏]
  

 

说明

  osgQt和移植osgQt过来都是通过QGLWidget渲染,Qt在5.5及以后推荐使用QOpenGLWidget窗口替代QGLWidget,在应用层最大的区别就是在QGLWidget上放置控件是无法半透明的,而在QOpenGLWidget上放置控件是可以透明的。
  当然,使用QOpenGLWidget实现,需要自行研究,之前是研究过一边并且实现了,研究差不多一周才终于实现基础Demo。
  具体这部分代码在博文《[OSG开发笔记(二十三):Qt使用QOpenGLWidget渲染OSG和地球仪]》
  
  右下的控件实际上是Qt的控件,这样开发可以节省一些hud控件开发,提高效率。

 

OSG编译

步骤一:准备源码

  

步骤二:安装cmake和cmake-gui

  自带了cmake,确认cmake版本:
  

  安装cmake-gui

sudo make install cmake-gui

  

  运行:

cmake-gui

  

步骤三:使用cmake配置目标工程

  先解压osg,然后打开cmake的界面:

cmake-gui

  

  

  

  

  是没有找到opengl,笔者这个麒麟版本特殊,无法在线安装,联系厂家更新安装的方式:

cd /etc/apt
sudo cp sources.list sources.list.bak
sudo vi sources.list

  修改:

deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-hwe   main

  

sudo apt-get update
sudo apt-get install libgl1-mesa-dev

  

  安装完opengl后,在cmake-gui的配置,配置成功:
  

  (PS1:那些额外的库,都需要编译然后添加进cmake环境变量,此处先不管,优先编译去osg,能跑,库实在太多)
  修改安装路径,避免直接安装到系统):
  

步骤四:生成工程

  

步骤五:终端编译

  打开终端,切换至build目录:

cd /home/yang/work/src/OpenSceneGraph-OpenSceneGraph-3.4.0/build-kylinV10

  

  开始make:

make -j8

  

  

  在来一次make,确认每个线程都过了。

步骤六:安装

  安装到我们之前设置的路径,这样可以完整的提取头文件和库

make install

  

  至此编译好了。

 

迁移之前的三维文字查看工具

  《[项目实战:Qt+OSG三维2D文字实时效果查看工具](》
  
  (PS:没有显示汉字是因为没有打字体库进去)。

麒麟系统开发笔记(十三):在国产麒麟系统上编译OSG库、搭建基础开发环境和移植测试Demo的更多相关文章

  1. Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示

    前言   在ubuntu上实现MPlayer播放器播放音乐.   Demo                Mplayer   MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...

  2. Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试

    前言   目前主流国产芯片为RV11XX.RK33XX.Hi35XX系列,本系列开启Hi3516系列的开发教程.   Hi3516DV300芯片介绍   Hi3516DV300为专业行Smart IP ...

  3. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  4. Hi3516开发笔记(四):Hi3516虚拟机编译uboot、kernel、roofts和userdata以及分区表

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121572767红胖子(红模仿)的博文大全:开发技术集合( ...

  5. [开发笔记usbTOcan]需求获取与系统需求分析

    简介 一直一以来都是站在实现某个模块功能的角度去做软件开发,没有尝试过站在系统的层面去做开发.最近正好不忙,觉得是时候以系统工程师的视角,去开发一个完整的系统.接下来的几篇文章,我会记录一个USB转C ...

  6. 钉钉开发笔记(5)android系统中html软键盘的适配

    最近项目中发现个别Android手机中存在弹出的软键盘会遮挡输入框的现象,最后自己写了一个方法(如下),问题基本解决. 记录下来,防止忘记.有什么不对的地方欢迎指正.O(∩_∩)O 1 //键盘适配 ...

  7. 【IOS开发笔记01】学生管理系统(上)

    端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...

  8. 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境

    1.前言 2015年1月15日,发布ArcGIS Runtime SDK for Android v10.2.5版本.从该版本开始默认支持android studio开发环境,示例代码的默认开发环境也 ...

  9. openwrt开发笔记一:源码下载与编译

    1.1 环境要求 编译系统:Linux发行版(本文使用Ubuntu) 编译一个可以安装的OpenWrt固件镜像文件(大约8MB大小的),你需要: 一个纯净的OpenWrt编译系统大约需要200MB的空 ...

  10. 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)

    1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在 ...

随机推荐

  1. 4.3 x64dbg 搜索内存可利用指令

    发现漏洞的第一步则是需要寻找到可利用的反汇编指令片段,在某些时候远程缓冲区溢出需要通过类似于jmp esp等特定的反汇编指令实现跳转功能,并以此来执行布置好的ShellCode恶意代码片段,LyScr ...

  2. 通用权限系统-Spring-Boot-Starter

    Spring-Boot-Starter 自定义Starter 案例一:读取application.yml中的参数 1.创建 1.创建maven工程hello-spring-boot-starter 2 ...

  3. Jenkins快速入门部署+实践

    安装 方法一 Jenkins中文网下载jenkins.war 方法二 直接从http://mirrors.jenkins-ci.org/war/latest/jenkins.war下载最新的war包, ...

  4. [GIT]解决:failed to push some refs to ...(过程重现)

    本问题有很多种情况,解决方法也很多,本文只针对笔者本人的自身诉求和情况,选择了一种适合我的解决方法.仅供参考. 1 问题描述 johnnyzen@XXDSSS MINGW64 /e/source_co ...

  5. Prompt Playground: 一个简易的提示词调试工具

    Prompt Playground: 一个简易的提示词调试工具 将LLM引入到日常的开发工作中后,会面临大量的提示词调试的工作,由于LLM不确定性,这个工作会变得非常的繁琐,需要不断的调整,甚至需要大 ...

  6. Day06_Java_作业

    A:简答题 1. 类是什么? 对象是什么?举例说明 2. 类由哪些内容组成? 3. 成员变量与局部变量的区别? 4. 什么是匿名对象?什么时候使用匿名对象? 5. 使用面向对象[封装]的好处有哪些? ...

  7. peewee模块更改数据-sqlite

    更改数据 from playhouse.migrate import *# SQLite example: my_db = SqliteDatabase('my_database.db') migra ...

  8. pandas 字典创建Dataframe

    所有的ndarrays必须具有相同的长度.如果传递了索引(index),则索引的长度应等于数组的长度.如果没有传递索引,则默认情况下,索引为range(n),其中n为数组长度. import pand ...

  9. 暑假刷题记 B

    动态规划 字符串 杂题 A:Animals and Puzzle B:Vanya and Treasure 根号分治. 实际上是从 \((1, 1)\) 先找一个 \(1\),再找一个 \(2\dot ...

  10. CGLIB动态代理对象GC问题排查

    一.问题是怎么发现的 最近有个新系统开发完成后要上线,由于系统调用量很大,所以先对核心接口进行了一次压力测试,由于核心接口中基本上只有纯内存运算,所以预估核心接口的压测QPS能够达到上千. 压测容器配 ...