自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (8)
  • 收藏
  • 关注

原创 C++学习(七十二)英寸 厘米 像素 dpi 分辨率

1英寸(in)=2.54厘米(cm)1厘米(cm)=0.3937008英寸(in)电子地图比例尺1:50000,实际图上1厘米(cm)表示500m电子地图的分辨率一般为300dpi,也就是每英寸有300个像素点,每个像素点的长度为1/3001pt=1/300in=2.54/300cm,表示2.54*500/300m=4.23m也即1:50000的电子地图在300...

2019-09-30 22:32:38 2830

原创 C++学习(七十一)3Dtiles glTF glb b3dm

一、glTFglTF表示了渲染一个模型的几何数据、纹理数据、材质数据、元数据等。glTF一般用于表示一个具体模型,比如汽车、树木等,不会用于表示一个数字城市,数字城市一般用3DTiles来表示。glTF的整体设计,概括有四点:第一,数据块(Buffer)连续,保证了读写性能;第二,提供了视图(View)和访问器(Accessor)的概念,在不损失数据块完整性的前提下提供类型信息和读取规范,...

2019-09-30 22:21:07 14121 1

原创 C++学习(七十)IaaS PaaS SaaS

一、SaaS软件即服务(也称为云应用程序服务)代表了云市场中企业最常用的选项。 SaaS利用互联网向其用户提供应用程序,这些应用程序由第三方供应商管理。 大多数SaaS应用程序直接通过Web浏览器运行,不需要在客户端进行任何下载或安装。Google Apps、Dropbox、Salesforce、Cisco WebEx、Concur和GoToMeeting等二、PaaS云...

2019-09-29 21:51:49 399

原创 C++学习(六十九)国产先看GPU

在CPU处理器领域,国产已经涉足了ARM、MIPS甚至X86等多种指令集架构,不论自研还是授权都已经有所成就,但在GPU领域,国内厂商面对AMD、NVIDIA两座大山恐怕连影都追不上。GPU市场的门槛太高,所以国内搞GPU自主研发的公司也有不少,但是作出成绩的不多,长沙景嘉微公司以军用GPU起家,此前研发的景美JM5400 GPU已经实现了军用领域的国产替代。长沙景嘉微电子股份有限公司成立...

2019-09-28 22:49:59 718

原创 C++学习(六十八)超线程

一、什么是超线程超线程(HT, Hyper-Threading)是英特尔研发的一种技术,于2002年发布。超线程技术原先只应用于Xeon处理器中,当时称为“Super-Threading”。之后陆续应用在Pentium 4 HT中。早期代号为Jackson。通过此技术,英特尔实现在一个实体CPU中,提供两个逻辑线程。之后的Pentium D纵使不支持超线程技术,但就集成了两个实体核心,所以...

2019-09-28 22:42:43 487

原创 C++学习(六十七)虚拟化

一、什么是虚拟化虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。二、为什么要虚拟化在实际中,虚拟化技术主...

2019-09-28 22:30:20 900

原创 C++学习(六十六)IoT和AIoT

loT是物联网的英文名称,是Internet of Things的缩写AloT是物联网的英文名称是All in IoT的缩写

2019-09-28 21:26:44 898

原创 C++学习(六十五)进程内存布局

低地址高地址堆向高内存地址生长,栈向低内存地址生长。C++程序的内存格局通常分为四个区:代码区(code area),全局数据区(data area),堆区(heap area),栈区(stack area)(即自由存储区)。所有类成员函数和非成员函数代码存放在代码区;全局数据区存放全局变量,静态数据和常量;余下的空间都被称为堆区;为运行函数而分配的局部变量、函数参数、...

2019-09-27 06:25:18 126

原创 C++学习(六十四)虚函数表_vfptr

在调试程序时,经常会遇到类下面有_vfptr(定义为void**类型),它其实是虚函数表指针(本质是函数指针数组,数组的内容为函数指针)。

2019-09-27 05:55:21 311

原创 C++学习(六十三)指针数组和数组指针

指针数组(类似整型数组、浮点型数组),指数组里的元素为指针。#define ARRAY_LEN 100char *myStrPtr[ARRAY_LEN] = // char指针的数组{ // 墨菲定律的几条推论:“会出错的事,总会出错。”“世上没有绝对正确的事情。”“每个解决办法都会衍生出新的问题。”};数组指针(类似整型指针、浮点型指针),指针指向的是数组。...

2019-09-26 22:28:47 124

原创 C++学习(六十二)整型初始化

Debug模式下, 未初始化的变量值为0xCCCCCCCC, 即:-858983460

2019-09-26 22:08:26 131

原创 C++学习(六十一)对象的内存布局

C++对象的内存布局要想知道C++对象的内存布局, 可以有多种方式, 比如:输出成员变量的偏移, 通过offsetof宏来得到 通过调试器查看, 比如常用的VSclass Base1{public: int base1_1; int base1_2;};sizeof(Base1) 8offsetof(Base1, base1_...

2019-09-26 06:56:54 61

原创 C++学习(六十)开源的神经网络库

https://github.com/alibaba/MNNhttps://github.com/Artelnics/OpenNNhttps://github.com/clab/dynethttps://github.com/intel/mkl-dnnhttps://github.com/pjreddie/darknet

2019-09-24 21:50:59 1621

原创 osg学习(二十九)地形夸张

使用rex引擎,地形夸张看不出来<options> <profile>epsg:4326</profile> <terrain driver="rex"> <vertical_scale>50.0</vertical_scale> </terrain> <cac...

2019-09-24 06:38:11 631

原创 osg学习(二十八)有关kml和kmz

KML (keyhole markup language)是以XML语言为基础开发的一种文件格式,用来描述和存储地理信息数据(点、线、面、图片等),是纯粹的xml文本格式,可用记事本打开编辑,所以kml文件很小。KML跟XML文件最大的不同就是KML描述的是地理信息数据。最早开发KML的是keyhole公司,2004年Goole收购keyhole并用KML开发GooleEarth.2008 年4月...

2019-09-22 22:51:58 1000

原创 osg学习(二十七)earth文件中的viewpoint没有解析出来

解析代码有从MapNode* mapNode = MapNode::load( arguments );换为osg::Node* node = MapNodeHelper().load(arguments, &viewer);

2019-09-22 18:10:32 402 1

原创 osg学习(二十六)earth文件解析过程

earth文件本质是xml文件,在osgEarth中earth文件采用XmlDocument来组织,具体是由TiXmlDocument来负责解析的。TiXmlDocument是开源TinyXml库中的一个类。

2019-09-21 16:50:03 557

原创 osg学习(二十六)osgearth文件的解析

earth文件是xml文件,通过xml的方式存放和解析osgEarthDrivers/earth/ReaderWriterOsgEarth.cppvirtual ReadResult readNode(const std::string& fileName, const osgDB::Options* readOptions) const{ osg::ref_ptr&lt...

2019-09-20 06:32:25 652

原创 C++学习(五十九)获取文件的属性信息,比如最后修改时间

#include <sys/stat.h>TimeStamposgEarth::getLastModifiedTime(const std::string& path){ struct stat buf; if ( stat(path.c_str(), &buf) == 0 ) return buf.st_mtime; ...

2019-09-19 06:52:16 458

原创 osg学习(二十五)osg根据二进制数据判断图片类型的方法

主要根据二进制的前几个数据来判断osgEarth/ImageUtils.cpposgDB::ReaderWriter*ImageUtils::getReaderWriterForStream(std::istream& stream) { // Modified from https://oroboro.com/image-format-magic-bytes/ ...

2019-09-16 22:36:42 383

原创 osg学习(二十四)osg不同系统默认字体的加载路径

加载字体语句osg::ref_ptr<osgText::Font> g_font = osgText::readFontFile("fonts/arial.ttf");在不同系统中加载路径是不同的,针对WIN32、Apple、Linux等系统的路径设置为:osgText/Font.cpp#if defined(WIN32) osgDB::convertStri...

2019-09-16 06:55:16 713

原创 C++学习(五十八)V8引擎

V8使用C++开发,并在谷歌浏览器中使用。在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序在V8引擎下的运行速度媲美二进制程序。V8中实现的ECMAS...

2019-09-15 18:37:43 821 1

原创 osg学习(二十三)osg读写插件的查找加载过程

osg在读写各种文件时,如模型文件(osga、ive)、earth文件及其中配置的高程/影像数据,需要通过相应的读写插件来执行,如何查找和加载相应的插件,osg有一套机制。最终返回一个ReaderWriter::ReadResult里面包含能够读取文件的对象(本质是一个类指针)。主要有以下四种查找和加载途径:1、从归档(压缩)读写器的扩展名列表中查找osgEarth/Registry....

2019-09-15 17:56:46 1454

原创 osg学习(二十二)osg读写插件的注册过程

读写插件包括高层、影像等文件的读写插件1、注册AnnotationLayerosgEarthAnnotation/AnnotationLayer.cppREGISTER_OSGEARTH_LAYER(annotations, AnnotationLayer);osgEarth/Layer#define REGISTER_OSGEARTH_LAYER(NAME,CLASS) ...

2019-09-14 22:36:23 1377

原创 osg学习(二十一)osg的BlockCount和Barrier

BlockCount的使用,和Block类似。阻塞线程,使用block函数。释放线程,使用release函数。但是比Block多出来的功能是,使用completed函数,表示阻塞线程的东西少了一个。当阻塞线程的东西为0时,被BlockCount阻塞的线程才开始运行。Barrier是线程栅栏类。这是一个对于线程同步颇为重要的阻塞器接口,它的构造函数与BlockCount 类似,可以设置一个整数值...

2019-09-11 21:42:04 437

原创 osg学习(二十)osg的线程同步

1、建立同步锁osgViewer/ViewBase.cppvoid ViewerBase::startThreading(){ _endDynamicDrawBlock = new osg::EndOfDynamicDrawBlock(numViewerDoubleBufferedRenderingOperation); _startRenderingBarrier = ...

2019-09-11 07:31:40 796

原创 osg学习(十九)osg的线程模型及其确定

在启动osg程序时会确定使用什么线程模型osgViewer/ViewBase.cppViewerBase::ThreadingModel ViewerBase::suggestBestThreadingModel(){ std::string str; if (osg::getEnvVar("OSG_THREADING", str)) { if...

2019-09-08 22:53:03 421

原创 osg学习(十八)osg的状态树与渲染树小结

1、osg除了场景树,还建立状态树和渲染树,主要是为了加速绘制,避免不必要的opengl状态频繁切换2、每个camera都会包含一个场景树(可能会和其它camera共用),并且在对camera进行渲染时,也会生成与该camera相对应的状态树和场景树。因此一个osg程序中,可能不止一个场景树、状态树、渲染树。...

2019-09-08 18:25:39 474

原创 osg学习(十七)camera的cull与draw执行位置的分配

主要与camera的render中的_graphicsThreadDoesCull有关,默认_graphicsThreadDoesCull为true1、如果_graphicsThreadDoesCull为true,则cull和draw都在窗体线程中执行osgViewer/Render.cppvoid Renderer::operator () (osg::GraphicsContext...

2019-09-08 18:15:36 1401

原创 osg学习(十六)osg的渲染树构建过程

1、osgUtil::SceneView生成渲染树根节点osgUtil/SceneView.cppvoid SceneView::setDefaults(unsigned int options){ _renderStage = new RenderStage; _cullVisitor->setStateGraph(_renderStage .get());...

2019-09-08 17:41:11 678

原创 osg学习(十五)osg的状态树构建过程

状态树中每一个节点包含一个状态集StateSet,如果一个场景树节点下有多个子节点有相同的状态集,那么这几个子节点将共用一个状态树节点。1、osgUtil::SceneView生成状态树根节点osgUtil/SceneView.cppvoid SceneView::setDefaults(unsigned int options){ _stateGraph = new Sta...

2019-09-07 07:55:00 621

原创 osg学习(十四)osg的场景图数据是如何赋给camera的

void View::assignSceneDataToCameras(){ osg::Node* sceneData = _scene.valid() ? _scene->getSceneData() : 0; _cameraManipulator->setNode(sceneData); if (sceneData) _camera->add...

2019-09-06 22:51:36 335

原创 osg学习(十三)osg的核心部件关系

osgViewer::Viewer osgViewer::Scene(负责存放场景图) osg::Camera osgViewer::Render osgUtil::SceneView osgUtil::StateGraph osgUtil::RenderStage...

2019-09-06 22:35:09 194

原创 osg学习(十二)谷歌开源Seurat工具加速VR渲染

Seurat开源,它是为开发者推出专门适用于优化移动VR内容的工具,它可以通过3D场景给处理为可在移动处理器上高校渲染的形式,目标是减少总体多边形数量,以降低处理任务量和资源消耗量。   此外,利用Seurat把RGBD图像作为输入,生成纹理网格,定位可配置数量的三角形,纹理大小和填充率,从而以传统方法所无法实现的方法来简化场景。这样就可以在性能上提升100倍左右,而且几乎没有视觉质量的损失,未来...

2019-09-01 18:09:18 404

原创 osg学习(十一)osg与osgre

OGRE和OSG本身被定位为一个纯粹的图形引擎。其中OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API)。OSG开发的主要意义在于,将3D场景定义为空间中一系列连续的对象,以进行三维世界的管理。正是由于场景及其参数定义的特点,通过状态转化、绘图管道和自定制等操作,OSG还可以用于优化渲染性能。OGRE(Object-Oriente...

2019-09-01 17:30:57 1217

原创 C++学习(五十七)mental ray已死

最早属于Autodesk,后来卖给了NVIDIA现在NVIDIA要专注于AI和GPU加速,就停止mental ray的更新和销售所以,以后就不会再有mental ray了!!!

2019-09-01 07:58:31 272

glview631-setup.exe

直观的查看支持的OpenGL的特性和扩展,你也可以下载OpenGL Extensions Viewer,这个软件也有多个平台的版本。

2021-08-15

osgAndroidExampleGLES2重新组织TestNativeCPlusPlus

osgAndroidExampleGLES2是Eclipse下工程文件,理论上Android Studio也是可以打开执行的,但由于种种原因,无法在Andoid Studio上执行。该程序完全基于Android Studio,用CMake组织C++代码,用Gradle作为构建工具,对osgAndroidExampleGLES2进行了重新配置,可以Android Studio3.5上运行、调试。

2021-06-19

NVIDIA_Nsight_Tegra_Release_3.6.19217.7511.exe

NVIDIA® Nsight™ Tegra®, Visual Studio Edition brings Microsoft Visual Studio to Android, allowing for seamless GDB and JDB remote debugging to all Android devices capable of native application debugging, supporting all Android ABIs – ARM v7, ARM v8, x86, x64.

2021-02-11

wgl相关函数.pdf

wgl是Windows操作系统和OpenGL做交互的一系列扩展api,该文档提供了wgl相关函数及其使用说明。

2020-05-31

mapx功能说明

对mapx的功能有很详细的说明,是开发地理信息系统的一个很好插件

2012-02-23

google输入法

很好用的输入法软件,可以方便的在中英文之间切换,并且字库的命中率也相当高

2008-07-13

瑞星最新杀毒

瑞星最新出的杀毒软件

2008-02-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除