OpenSceneGraph之iOS版本编译

osg学习(五十五)osg_ModelViewMatrix osg_ModelViewProjectionMatrix osg_ProjectionMatrix osg_NormalMatrix 分别替换glsl中的gl_ModelViewMatrix gl_ModelViewProjectionMatrix gl_ProjectionMatrix gl_NormalMatrix,如果没有这些则插入。 为什么要如此替换? 这些gl_*变量在早期的版本中有(330中已经没有了),如果glsl有这些变量可能会出现高版本无法使用的问题,osg同一采用新的变量好处在于,避免不同版本的不兼容性问题。在低版本可以用,在高版本也可以用。不足的地方时,需要在程序中随时更新osg_*变量。 osg/. 阅读详情

    本文主要探讨iOS平台下的编译,官网上以及代码托管库github上提供了编译的步骤,我也亲测了一下,命令行执行了一下发现编译不过,基本的工程都没有生成,有点尴尬,感觉是cmake的版本没有对上,尝试了几次最终放弃了命令行的方式。 OpenSceneGraph提供了cmake 脚本的支持,方便开发者编译源码。一些基本的设置都在CMakeLists.txt里面。

在此我们使用CMake的GUI工具,我使用的版本是3.6.1的。步骤基本如下:

1、首先下载源码(我使用的是tag3.6.0的代码),比如下在/usr/osg文件夹下面。

2、下载编译需要的第三方库,比如下载完成解压到/usr/osg/thirdparty下。

3、打开CMake,将/usr/osg下面的CMakeLists.tx拖到CMake窗口上,设定输出目录,比如/usr/osg/build。

4、需要先点击一下Configure。(此时默认是Mac环境下的配置)

4、设置必要的参数(改成iOS的配置):

IPHONE_SDKVER = 13.1  

IPHONE_VERSION_MIN = 8.0 

DYNAMIC_OPENSCENEGRAPH = OFF  

DYNAMIC_OPENTHREADS = OFF  

如果想使用OpenGLES1

OSG_GL1_AVAILABLE = OFF  

OSG_GL2_AVAILABLE = OFF  

OSG_GL3_AVAILABLE = OFF  

OSG_GLES1_AVAILABLE = ON  

OSG_GLES2_AVAILABLE = OFF  

OSG_GL_LIBRARY_STATIC = OFF   

OSG_GL_DISPLAYLISTS_AVAILABLE = OFF  

OSG_GL_MATRICES_AVAILABLE = ON  

OSG_GL_VERTEX_FUNCS_AVAILABLE = ON  

OSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE = ON  

OSG_GL_FIXED_FUNCTION_AVAILABLE  = ON  

如果想使用OpenGLES2或者OpenGLES3

OSG_GL1_AVAILABLE  = OFF  

OSG_GL2_AVAILABLE = OFF  

OSG_GL3_AVAILABLE = OFF  

OSG_GLES1_AVAILABLE = OFF  

OSG_GLES2_AVAILABLE = ON   OSG_GLES3_AVAILABLE = OFF(使用ES2)

或者

OSG_GLES2_AVAILABLE = OFF   OSG_GLES3_AVAILABLE = ON (使用ES3)

OSG_GL_LIBRARY_STATIC = OFF  

OSG_GL_DISPLAYLISTS_AVAILABLE = OFF  

OSG_GL_MATRICES_AVAILABLE = OFF  

OSG_GL_VERTEX_FUNCS_AVAILABLE = OFF  

OSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE = OFF  

OSG_GL_FIXED_FUNCTION_AVAILABLE = OFF  

再设置把依赖的第三方库(刚才下载的)按照头文件以及库文件格式都配置好。其实就是把官网提供教程的命令行在GUI里面配置一下。

-DCURL_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/curl-ios-device/include" \
-DCURL_LIBRARY:PATH="$THIRDPARTY_PATH/curl-ios-device/lib/libcurl.a" \
-DFREETYPE_INCLUDE_DIR_freetype2:PATH="$THIRDPARTY_PATH/freetype-ios-universal/include/freetype" \
-DFREETYPE_INCLUDE_DIR_ft2build:PATH="$THIRDPARTY_PATH/freetype-ios-universal/include" \
-DFREETYPE_LIBRARY:PATH="$THIRDPARTY_PATH/freetype-ios-universal/lib/libFreeType_iphone_universal.a" \
-DTIFF_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/tiff-ios-device/include" \
-DTIFF_LIBRARY:PATH="$THIRDPARTY_PATH/tiff-ios-device/lib/libtiff.a" \
-DGDAL_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/gdal-ios-device/include" \
-DGDAL_LIBRARY:PATH="$THIRDPARTY_PATH/gdal-ios-device/lib/libgdal.a"


5、设置必要的参数:点击Configure,没错误就可以Generate了,有错误就按照提示来修改。

一般此时需要设置一下EGL的路径(用到了openGLES),我设置的是

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/usr/include、

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/OpenGLES.framework

这个需要根据自己的Xcode环境来设置。

然后把CMAKE_OSX_DEPLOYMENT_TARGET这一行删除,或者把里面的值删除掉,OPENGL_HEADER1需要改成#include <OpenGLES/ES2/gl.h>,搜索macosx,把搜索出来的都删掉。然后在build文件夹下面找到project工程打开,看一下base sdk是否配置正确,然后就可以开心的编译玩耍了。

osgEarth的Rex引擎原理分析(一二零)如何显示瓦片编号 目标:(九十四)中的问题175 效果如下: 思路如下: 绘制瓦片编号采用glsl着色器实现,由于glsl不能直接显示数字,这里将数字变为纹理图片,通过组合数字纹理图片,达到显示数字的目的。瓦片编号是0..9和/十一个符号组成的,纹理图片需要包含这些数字符号。 步骤如下: 1、生成数字、分隔符的纹理图片。 int imagePixelSize=256;//图片的像素大小,指宽度,每个瓦片的像素大小为256*256 int charactorNum=11;//图片中字符的. 阅读详情

相关推荐

OpenSceneGraph源码分析:osg模块

济南友泉软件有限公司 osg库是OpenSceneGraph最为重要的一个模块,也是OS从第一个版本到当前版本一直都存在的库。osg库提供了场景节点管理、图形绘制、渲染状态管理等功能。 一、内存管理 OSG通过引用计数提供了一种自动管理内存的机制。在OSG中,引用计数机制由osg::ref_ptr和 osg::Referenced实现。 所有的OSG的节点和场景图形数据(状态信息 顶点数组 法线 纹理坐标)都派生于osg::Referenced类进行内存引用计数。 二、场景管理 OS..

国产CAx(CAD/CAE/CAM)软件研发 2357

OSG在Qt程序中不能显示三维图形的解决办法

发现我的Qt OSG窗口不能显示三维物体,另外一个Qt OSG程序可以。代码看不出任何问题。查看OSG日志也没发现异常。后来把正常程序的OSG的DLL和插件复制到不正常的程序,就可以正常显示了。总结起来是OSG编译时的CMake需要如下配置: 为了使用高阶功能,我设置了OpenGL context version为3.3,选中OSG_GL3_AVAILABLE。注意:OSG_GL1_AVAILABLE也必须为true, OSG_GL_FIXED_FUNCTION_AVAILABLE必须为false。其他组

deping_chen的专栏 1827

xcode下IOS端osg(OpenSceneGraph)项目搭建

OSG库准备 版本3.4.0,git上clone,自行编译,具体编译过程有空再写。 编译osg的cmake命令: cmake ./ -G Xcode -DOSG_BUILD_PLATFORM_IPHONE:BOOL=ON \ -DIPHONE_SDKVER="10.0” \ -DIPHONE_VERSION_MIN="8.0" \ -DOPENGL_PROFILE:STRING=GLES2 \ -...

831

osgEarth真HelloWorld

预先设置ports/osg/portfile.cmake L3。否则调用osg相关功能时会出现如下提示。中包含 tests 和 data 目录。osgEarth安装指南。

u013255730的博客 694

OSG(OpenSceneGraph)介绍

核心特性场景图结构:OSG使用场景图(Scene Graph)来组织和管理3D场景中的对象。场景图是一种树状结构,节点可以是变换节点、几何节点、光照节点等。高性能:通过状态排序、裁剪(culling)和细节层次(LOD)等技术优化渲染性能。跨平台:支持Windows、Linux、macOS等多种操作系统。支持多种数据格式:可以导入和导出多种3D文件格式,如.osg, .obj, .3ds, .dae (Collada), .fbx等。功能丰富。

weixin_45277917的博客 1334

3D图形碰撞检测:结合OSG和QT的实战编程示例

本文还有配套的精品资源,点击获取 简介:本教程以OpenSceneGraph(osg)和Qt框架为基础,提供了一个结合编程的实例,专注于3D图形中的碰撞检测。OpenSceneGraph是一个高性能的3D图形库,而Qt是一个跨平台的应用开发框架。教程会指导如何在Qt开发环境中配置和构建osg项目,展示和交互3D场景,并重点介绍如何实现碰撞检测。内容包括OSG和QT的集成,C...

weixin_34535286的博客 1240

iOS 下编译 OSG 引擎

1、准备工具 1、CMake 3.0+ 2、Xcode 6.0+ 3、下载 OSG 3.2.1 稳定版: 2、设置真机或模拟器: 在iOS下需要选择是使用Simulator还是使用Device,因此在编译之前需要打开CmakeList.txt在源码根目录,找到OSG_BUILD_PLATFORM_IPHONE项会有如下两行: OPTION(OSG_BUILD_PLATFORM_

skylook的专栏 1627

最小二乘拟合圆:使用拉格朗日乘子法

在本文中,我们将探讨如何使用拉格朗日乘子法来进行最小二乘拟合,并将其应用于拟合一个空间圆。首先,我们需要定义问题。给定一组二维或三维数据点,我们的目标是找到一个圆,使得这些数据点到圆的距离的平方和最小。为了找到最小值,我们需要计算拉格朗日函数的偏导数,并令其等于零。通过解决优化问题,我们可以找到最佳拟合的圆,以最小化数据点到圆的距离的平方和。其中,(x, y) 是圆心的坐标,r 是圆的半径,(xi, yi) 是数据点的坐标。其中,g(x, y, r) = 0 是约束条件,C 是常数,λ 是拉格朗日乘子。

TechProX的博客 475

xcode 新建php项目,在iOS下创建XCode工程

准备阶段OpenSceneGraph代码,可以从下载获取。XCode 4.3.2 with IPhone SDK 5.1 (Availablefrom the OSX AppStore)Simulator or Device在iOS下需要选择是使用Simulator还是使用Device,因此在编译之前需要打开CmakeList.txt在源码根目录,找到OSG_BUILD_PLATFORM_IPH...

weixin_30489285的博客 218

基于鸿蒙 UniProton 的汽车电子系统开发指南

基于鸿蒙UniProton实时操作系统,提供了汽车电子系统开发的完整指南。通过统一的设计模式和开发规范,实现了高效、可靠的汽车电子系统开发。

m0_67505153的博客 178

LPDDR6与LPDDR5 State Diagram技术探讨

LPDDR6与LPDDR5 State Diagram技术探讨

zilan23的博客 1176

osgearth IOS版本编译

1、准备工作     文档参照:Building osgEarth for IOS  Generating an IOS XCode Project 1.1、Mac OS           Mac OS 10.8.3 1.2、XCode           XCode 4.6(4H127) 1.3、CMake           CMake 2.8.12.1

XP_lmq的专栏 5474

【Prometheus】prometheus结合cAdvisor监控docker容器运行状态,并且实现实时告警通知

Docker的监控,可以使用Docker自带的stats命令来获取当前主机上运行中的容器的资源使用情况。 例如:容器的CPU使用率、内存占用、网络IO以及磁盘IO等指标。

景天科技苑 6万+

OpenSceneGraph 开源项目教程

OpenSceneGraph(OSG)是一个高性能的3D图形库,广泛应用于可视化、仿真、游戏开发等领域。它提供了丰富的功能和工具,支持多种平台,包括Windows、Linux、macOS和iOS。OSG使用C++编写,基于OpenGL,能够高效地处理复杂的3D场景和图形渲染任务。 ## 2. 项目快速启动 ### 2.1 安装依赖 在开始之前,确保你已经安装了CMake(版本2.8.0或更高...

gitblog_00270的博客 1344

基于Simulink的雷达跟踪系统仿真(附源码)

此示例包含对雷达系统的基本特征进行建模的子系统。该模型是用于目标位置和速度检测的雷达系统的典型模型。该示例包括雷达脉冲发生器、射频发射器子系统、移动目标的 Simulink 表示、射频接收器和接收模块(Rx 模块)。

珞瑜的博客 3515

21、二维卷积层(convolution2dLayer)的全面解析

本文全面解析了二维卷积层(convolution2dLayer)的原理、属性和应用,详细介绍了其在深度学习中的作用及实现方法。文章涵盖创建卷积层的语法、参数设置、算法原理、输入输出格式、优化策略以及实际应用案例,旨在帮助读者更好地理解和应用二维卷积层构建高效的深度学习模型。

red88的博客 319

终极指南:OpenSceneGraph - 高性能3D图形渲染库完全解析

OpenSceneGraph(OSG)是一款开源、高性能的C++ 3D图形渲染库,专为实时可视化应用提供强大的图形渲染能力。作为基于OpenGL的场景图系统,OpenSceneGraph通过优化的渲染管道和跨平台支持,为游戏开发、虚拟现实、科学可视化和建筑模拟等领域提供专业级解决方案。🎮 ## 🔥 为什么选择OpenSceneGraph? OpenSceneGraph的核心优势在于其**场

gitblog_00636的博客 498

Labview界面多按钮控件的一种处理方法

当界面中存在多个按钮控件时候,此时如果逐个为每个控件添加事件条件则会显得较为麻烦,此处提供了一种对多控件进行批量处理的方法

miracleis的博客 2703

OpenSceneGraph跨平台开发实战:Windows、macOS、Android全平台适配终极指南

OpenSceneGraph作为一款强大的开源3D图形引擎,为开发者提供了**跨平台3D渲染**的终极解决方案。无论您需要开发Windows桌面应用、macOS专业工具还是Android移动应用,OpenSceneGraph都能提供一致的开发体验和卓越的性能表现。本文将为您详细介绍如何在三大主流平台上快速搭建OpenSceneGraph开发环境,并分享实战中的关键技巧。 ## 🚀 OpenSc

gitblog_00878的博客 417

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OpenSceneGraph入门指南:10分钟快速上手3D图形编程

OpenSceneGraph(简称OSG)是一个开源的高性能3D图形工具包,专为需要实时图形渲染的应用程序设计。这个强大的C++库为开发者提供了完整的3D图形解决方案,广泛应用于虚拟现实、科学可视化、游戏开发、仿真训练和地理信息系统等领域。无论你是3D图形编程的新手还是经验丰富的开发者,OpenSceneGraph都能帮助你快速构建高质量的3D应用程序。 ## 🚀 OpenSceneGraph

gitblog_00182的博客 407

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Qt下使用mac下编译好的OSG库

mac下编译osg 3.4.0一开始没成功,据说64位的OS X不能正常使用QT,但是我编译动态库的时候没有反选OSG_USE_QT,编译成功了,osgviewerQt例子也跑起来了,需要在cmake中加入 set(DESIRED_QT_VERSION "5" CACHE STRING "") set(CMAKE_PREFIX_PATH "/Users/Qt5.11.1/5.11.1/clang_...

tankweight的博客 946

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

osgEarth编译

转载:http://www.cnblogs.com/sunliming/archive/2011/10/24/2222556.html 今天终于完成了osgEarth的编译,花了有一天多时间吧,发现网上几乎没有什么详细的编译教程,所以就写一个文档供后来者作为参考吧. osgEarth的编译需要osg和一些第三方插件库,我主要参考了cnblogs上的一篇博文,但是也不够详细,并且我是在已

ldkcumt的专栏 2316

OSG-3.4.0 简要说明(Readme)

欢迎来到OpenSceneGraph(OSG)世界. Welcome to the OpenSceneGraph (OSG). 对于项目最新信息, 以及如何编译和运行库和示例的更多细节, 可以查看OSG网站上的文档: For up-to-date information on the project, in-depth details on how tocompile and run lib...

weixin_30292843的博客 238

从源码到可执行:用CMake+VS2022构建你自己的OSG开发环境(附第三方库配置心得)

本文详细介绍了如何在Windows 10平台上使用CMake和Visual Studio 2022构建OpenSceneGraph(OSG)开发环境,包括源码获取、工具链配置、第三方库精细配置及编译安装实战。通过深度解析CMake配置和VS2022项目集成指南,帮助开发者快速搭建高性能的三维可视化开发环境,并解决常见配置问题。

weixin_30839881的博客 393

从黑窗口到旋转地球:我的第一个OSG图形程序踩坑实录(VS2022 + CMake项目)

本文详细记录了在VS2022和CMake环境下配置和开发第一个OSG图形程序的完整过程。从环境搭建、窗口创建到场景构建和交互实现,涵盖了开发中的常见问题及解决方案,特别适合C++开发者学习现代图形编程和跨平台开发配置。

weixin_30836759的博客 521
上一篇: 知道这20个正则表达式,能让你少写1,000行代码
下一篇: 常用图形渲染API简介
SkyNullCode
博客等级 码龄11年 15粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值