hankern的专栏

私信 关注
hankern
码龄13年

Code World,Cool Life

  • 345,700
    被访问量
  • 648
    原创文章
  • 5,636
    作者排名
  • 314
    粉丝数量
  • 于 2008-02-21 加入CSDN
获得成就
  • 获得106次点赞
  • 内容获得59次评论
  • 获得352次收藏
荣誉勋章
兴趣领域
  • #算法
    #CV(computer vision)
TA的专栏
  • C++学习
    194篇
  • osg学习
    30篇
  • openGL之API学习
    150篇
  • osgEarth的Rex引擎原理分析
    116篇
  • unreal虚幻引擎学习
    1篇
  • Cesium学习
    1篇
  • git学习
    1篇
  • Vulkan学习
    2篇
  • 人工智能学习
    1篇
  • 软件工程学习
  • Unity3D学习
  • osg
    106篇
  • osgearth
    87篇
  • 地理信息gis
    13篇
  • 高程
    2篇
  • rex
    75篇
  • 地理信息引擎
    41篇
  • C
    1篇
  • C++
    95篇
  • 3D建模
  • 倾斜摄影
    3篇
  • 软件工程
    11篇
  • 软件开发
    9篇
  • 成本
    1篇
  • ogre
    1篇
  • 虚拟旅游
    3篇
  • Photoscan
    1篇
  • VR
    4篇
  • 虚拟现实
    2篇
  • AR
    1篇
  • HTC
    1篇
  • VIVE
    1篇
  • opengl
    128篇
  • 图形学
    86篇
  • 视景仿真
    1篇
  • 可视化
    34篇
  • cuda
    1篇
  • AGG
    1篇
  • 内存泄漏
    1篇
  • 几何计算
  • 瓦片
    1篇
  • PROJ4
    1篇
  • Projection
    2篇
  • Geographic
    1篇
  • 投影
    1篇
  • STK
  • 着色器
    112篇
  • 数字地球
    23篇
  • Qt
    5篇
  • GLSL
    96篇
  • Vulkan
    2篇
  • git
    3篇
  • AI
    4篇
  • 人工智能
    4篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

C++学习(二二零)一个简单的C++的Android交叉编译项目

test.cpp//test.cpp#include <stdio.h>int main(){ printf("hello CMake!
"); return 0;}CMakeLists.txt# CMakeLists.txt# CMake最低版本要求cmake_minimum_required(VERSION 3.5)# 项目名称project(test)# 生成可执行文件,test是可执行文件的名字,test.cpp是源文件名称,如
原创
1阅读
0评论
0点赞
发布博客于 6 分钟前

C++学习(二一九)could not find specified instance of Visual Studio

CMake Error at CMakeLists.txt:111 (PROJECT): Generator Visual Studio 15 2017 could not find specified instance of Visual Studio: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community
原创
22阅读
0评论
0点赞
发布博客于 7 天前

C++学习(二一八)GUID

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。在 Windows 平台上,GUID 广泛应
原创
83阅读
0评论
0点赞
发布博客于 9 天前

C++学习(二一七)有关Nsight Tegra

安装的问题:https://blog.csdn.net/shangguanwaner/article/details/79833742
原创
19阅读
0评论
0点赞
发布博客于 11 天前

C++学习(二一六)沙堆原理

沙堆高度越高,需要的沙子越多,沙堆底半径越大解决问题的难度越高,需要的知识越多,问题周边知识半径越大
原创
27阅读
0评论
0点赞
发布博客于 12 天前

C++学习(二一四)Can‘t get the requested toolchain

Can't get the requested toolchain armv7-a:aarch64-linux-android:4.9:r19c [E:\Projects\QT5.12\osg_earth_android_build\osg\CMakeFiles\3.12.0\VCTargetsPath.vcxproj]ToolchainRootPath D:\android-ndk-r19cToolchainIdentifier aarch64-linux-android-4.9ToolchainA
原创
21阅读
0评论
0点赞
发布博客于 19 天前

C++学习(二一五)ARM与FPGA

ARM呢就bai像是一个设计好du的办公楼,那个zhi部门负责什dao么事情都是定好的,zhuan你要做的就是合理调配部门shu资源合理搭配来完成你的目的。FPGA呢就是给你一大堆建筑材料和人员,你要它建成什么样子它就是什么样子!...
原创
77阅读
0评论
0点赞
发布博客于 19 天前

C++学习(二一四)边缘计算

边缘计算,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。其应用程序在边缘侧发起,产生更快的网络服务响应,满足行业在实时业务、应用智能、安全与隐私保护等方面的基本需求。而云端计算,仍然可以访问边缘计算的历史数据。无论是云、雾还是边缘计算,本身只是实现物联网、智能制造等所需要计算技术的一种方法或者模式。严格讲,雾计算和边缘计算本身并没有本质的区别,都是在接近于现场应用端提供的计算。就其本质而言,都是相对于云计算而言的。...
原创
102阅读
0评论
0点赞
发布博客于 19 天前

C++学习(二一三)交叉编译工具链as ar ld objdump等

as汇编器。将汇编语言程序转换为ELF (Executable and Linking Format,执行时链接文件格式)格式的可重定位目标代码,这些目标代码同其它目标模块或函数库易于定位和链接。ld链接器或加载器。根据链接定位文件Linkcmds中的代码区、数据区、BSS区和栈区等定位信息,将可重定位的目标模块链接成一个单一的、绝对定位的目标程序。该目标程序是ELF格式,并且可以包含调试信息。ar库管理器。将多个可重定位的目标模块归档为一个函数库文件。采用函数库文件,应用程序能够从该文
原创
40阅读
0评论
0点赞
发布博客于 19 天前

C++学习(二一二)有关ARM

1、ARM公司ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM的经营模式在于出售其知识产权核(IP core),授权厂家依照设计制作出建构于此核的微控制器和中央处理器。2、ARM架构ARM9、ARM11、cortex-A8等构架3、ARM处理器采用ARM架构的处理器,比如高通、华为麒麟等...
原创
31阅读
1评论
0点赞
发布博客于 20 天前

C++学习(二一一)英伟达和七彩虹

英伟达是GPU芯片生产商,跟他同级别的全世界只有AMD和Intel七彩虹是大陆显卡生产商,对标美国的EVGA走量卖服务,产品整体质量略逊于华硕技嘉微星,略强于索泰影驰映众,碾压其他国内能买到的牌子显卡生产商就是买GPU芯片回去自己加工然后贴上自己牌子的,卖的是散热和供电方案以及售后服务,现在多了个外形厂商之间的价格差距主要来源于外形、散热、体积、灯光、售后英伟达是卖发动机的,七彩虹是卖车的...
原创
30阅读
0评论
0点赞
发布博客于 20 天前

C++学习(二一零)移动处理器

苹果高通三星英伟达Intel联发科Ti德仪华为海思国产全志
原创
28阅读
0评论
0点赞
发布博客于 20 天前

C++学习(二零九)PowerShell

按住shift+右键,可以打开PowerShell。Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。
原创
12阅读
0评论
0点赞
发布博客于 23 天前

C++学习(二零八)CMake的Project指令

主要用于提供项目的名称、版本、使用编译语言等信息project(<PROJECT-NAME> [<language-name>...])project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] [DESCRIPTION <project-description-string>]
原创
23阅读
0评论
0点赞
发布博客于 23 天前

C++学习(二零七)Tegra

Tegra是NVDIA推出的基于ARM架构通用处理器品牌(即CPU,NVIDIA称为“Computer on a chip”片上计算机),能够为便携设备提供高性能、低功耗体验。Tegra是一种采用单片机系统设计(system-on-a-chip)芯片,它集成了ARM架构处理器和NVIDIA的GeforceGPU,并内置了其它功能,产品主要面向小型设备。和Intel以PC为起点的x86架构相比,ARM架构的Tegra更像是以手机处理器为起点做出的发展。...
原创
45阅读
3评论
0点赞
发布博客于 23 天前

C++学习(二零六)VCTargetsPath

路径:Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
原创
14阅读
0评论
0点赞
发布博客于 23 天前

C++学习(二零五)MSBuild是什么

位于Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exeMSBuild 是 Microsoft 和 Visual Studio的生成系统,它不仅仅是一个构造工具,bai应该称之为拥有相当强大扩展能力的自动化平台。MSBuild基本概念:MSBuild有四个基本块(属性、项、任务、目标):MSBuild属性: 属性是一些键/值对,主要用来存储一些配置信息。MSBuild项: 主要是存储一些项目文件信息...
原创
46阅读
0评论
0点赞
发布博客于 23 天前

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.
exe
发布资源于 25 天前

C++学习(二零四)GPU架构Maxwell Fermi Kepler

Maxwell之后还有Pascal,Turing架构的显卡,目前最新的是去年推出的Turing架构RTX系列显卡,Turing 是非常先进的 GPU 架构,集新一代着色器、实时光线追踪技术和AI增强图形特性于一身,无论创作或游戏,都有不错的流畅体验。...
原创
38阅读
0评论
0点赞
发布博客于 26 天前

C++学习(二零三)Quaro Geforce Tesla

nvidia quadro是专业级显卡标识。是重视openGL性能的bai专业制图卡,du相应的也zhi会配备更大的显dao存。价格惊人,专业zhuan作图软件也会调用shu来进行渲染加速,用来玩游戏得不偿失。nvidia geforce是游戏显卡的名字之一,旗下还分为GT,GTX,GTS等,GTX性能最好。是重视directx性能的游戏显卡,价格比较亲民,但是绝大多数专业制图软件不会调用这种显卡进行硬件加速。nvidia tesla,这个虽然是显卡的外形,但是并没有显示输出接口,这是协处理器,运算卡。
原创
30阅读
0评论
0点赞
发布博客于 26 天前

C++学习(二零二)‘NVIDIA Nsight Tegra Visual Studio Edition‘ is not installed

CMAKE_SYSTEM_NAME is 'Android' but 'NVIDIA Nsight Tegra Visual Studio Edition' is not installed.
原创
34阅读
0评论
0点赞
发布博客于 27 天前

C++学习(二零一)could not find any instance of Visual Studio

CMake Error at CMakeLists.txt:111 (PROJECT): Generator Visual Studio 15 2017 could not find any instance of Visual Studio.
原创
13阅读
0评论
0点赞
发布博客于 27 天前

C++学习(二零零)交叉编译器的命名

arch-vendor-kernel-systemarch,即系统架构,表示交叉编译器,是用于哪个目标系统架构中,用于那个平台中的。即,用此交叉编译器编译出来的程序,是运行在哪种CPU上面的arch的值,常见的有很多种,比如arm,x86,mips等等。vendor,即生成厂家,提供商,表示谁提供的,即谁制作出来这个交叉编译器的。vendor的值,貌似是可以自己随便填写的。kernel,直译为,内核其实指的是,你用此交叉编译器,编译出来的程序,所运行的目标系统。即,此交叉编译器,编译出来的程序,
原创
15阅读
0评论
0点赞
发布博客于 28 天前

C++学习(一九九)aarch64-linux-android-4.9 arm-linux-androideabi-4.9 llvm关系

这些都是交叉编译工具
原创
77阅读
0评论
0点赞
发布博客于 28 天前

C++学习(一九八)Android NDK中找不到gcc

在编译osg的Android库时遇到的问题。使用的NDK版本为android-ndk-r19c,在android-ndk-r16b中能找到相关的gcc程序。问题原因:ndk慢慢把clang作为主编译器,gcc将会被移除。ndk16b的一个重要发布提示:GCC 不再受支持,虽然尚未从 NDK 中移除,但其已不再接收向后移植项。只有在 libc++ 足够稳定,可以成为默认 STL 之后,才能移除 GCC,因为 gnustl 的某些部分仍与 Clang 不兼容。当从 r18 中移除其他 STL
原创
58阅读
1评论
0点赞
发布博客于 28 天前

C++学习(一九七)ANDROID_PLATFORM not set

原创
51阅读
0评论
0点赞
发布博客于 1 月前

C++学习(一九六)Qt5.12+osg3.6for Android

1、编译osg为Android库2、开发Android程序3、
原创
107阅读
0评论
0点赞
发布博客于 1 月前

C++学习(一九五)AbI is incompatible

应该是应用的CPU和模拟设备的CPU不匹配导致的
原创
82阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一九四)QT5.15以后不再提供离线安装版

Due to The Qt Company offering changes, open source offline installers are not available any more since Qt 5.15. Read more about offering changes in the https://www.qt.io/blog/qt-offering-changes-2020 blog.If you need offline installers, please consider.
原创
64阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一九三)build.gradle文件

路径:D:\Qt\Qt5.12.0\5.12.0\android_arm64_v8a\src\android\templates
原创
34阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一九二)AndroidManifest.xml文件

路径:D:\Qt\Qt5.12.0\5.12.0\android_arm64_v8a\src\android\templates
原创
30阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一九一)什么是Gradle

翻译:摇篮Gradle是一种构建工具,它可以帮你管理项目中的差异,依赖,编译,打包,部署......,你可以定义满足自己需要的构建逻辑,写入到build.gradle中供日后复用.Gradle不是一种编程语言,它不能帮你实现软件中的任何实际功能...
原创
26阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一九零)libc++与 libstdc++

libstdc++跟clang++一起用的时候可能会有各种bug,比如前段时间出过libstdc++的variant不能在clang++上编译,以及最近libstdc++的filesystem::directory_iterator在clang++编译后会提示找不到符号。libstdc++是gcc搞的,libc++是llvm搞的,他们都是C++标准库的实现。clang对libstdc++的支持会比反过来好不少。每个操作系统使用本地库,例如GNU / Linux上的libstdc ++和Mac O
原创
58阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八九)JNI与NDK关系

JNI:Java Native Interface,即 Java本地接口作用: 使得Java 与 本地其他类型语言(如C、C++)交互,即在 Java代码 里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码。JNI是 Java 调用 Native 语言的一种特性JNI 是属于 Java 的,与 Android 无直接关系NDK:Native Development Kit,是 Android的一个工具开发包NDK是属于 Android 的,与Java并无直接关系.
原创
47阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八八)android程序编译时NDK ld: cannot find -lc++

Android 平台提供很小的 C++ 运行时支持库 (libstdc++)。这种很小的支持不包含如下支持:标准 C++ 库支持(几个无关紧要的标头除外)。 C++ 异常支持 RTTI 支持NDK 提供此默认库使用的标头。此外,NDK 还提供大量可提供其他功能的帮助程序运行时。...
原创
81阅读
2评论
0点赞
发布博客于 2 月前

C++学习(一八七)libc,glib,glibc,eglibc,libc++,libstdc++,gcc,g++

当你在linux下写C/C++代码的时候,是不是会遇到许多编译链接的问题? 时不时报个glibc,gcc,g++等相关的错误? 很多时候都无从下手,而且比较混乱。 这也是编译链接过程中经常出现的问题。这篇文章不是去介绍如何编译链接,而是理清编译链接过程中碰到的一些概念和出现的问题。尤其是,libc,glib,glibc,eglibc,libc++,libstdc++,gcc,g++。从libc说起。libc是Linux下原来的标准C库,也就是当初写hello world时包含的头文件#includ
原创
47阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八六).so与.so.x

x一般指版本号
原创
46阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八五)ld链接器是什么

ld--GNU连接器。ld是GNU工具链中的一个软件,主要用于将obj文件连接成可执行文件。同时你能使用自己的脚本来控制ld的行为,这是你可以通过-T选项选择你的脚本而不是默认的。ld是GNU的链接器,支持生成大量的可执行文件格式,它是一款复杂而快捷的工具。 ld有许多灵活的参数来控制其链接过程。这里只介绍主要几个参数。如果你希望用example.ld作为链接脚本,可以这样使用:ld -T example.ld如果你想把一系列的.o文件链接到另外一个.o文件中,可以像这样用ld:..
原创
74阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八四)LLVM是什么

LLVM项目是模块化、可重用的编译器以及工具链技术的集合。
原创
28阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八四)clang是什么

Clang是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。Clang是一个由Apple主导编写,基于LLVM的C/C++/Objective-C编译器。Clang是一个C++编写、基于LLVM、发布于LLVM BSD许可证下的C/C++/Objective-C/Objective-C++编译器。...
原创
62阅读
1评论
0点赞
发布博客于 2 月前

C++学习(一八三)qmake的$$()、$$、$$[]

#自定义变量MYVAR1 = testMYVAR2 = "test t"#取变量值使用$$...message($$MYVAR1) #自定义变量message($$PWD) #内建变量message($$QMAKE_DIR_SEP) #内建变量标记正反斜杠#取属性值使用$$[...]message($$[QT_INSTALL_BINS]) #内建属性message($$[QT_INSTALL_QML]) #...
原创
26阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八二)qt如何生成makefile文件

是由qmake生成的,qmake生成的源码是什么?
原创
49阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八一)android的NDK、SDK版本的对应关系

NDK某一版本支持的SDK版本可以在其platforms文件夹下查看各个AndroidSDK版本号和Android版本的对应关系如下,第一列为android版本,第二列为API版本(也就是SDK版本),第三列为版本命名,一般都是甜点,第四列为发布时间平台版本 API级别(SDK版本) 版本代号 发布时间 Android 11 30 R 2020.9 Android 10.0 29 Q 2019.8 Android 9....
原创
146阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一八零)android编译时ld产生cannot find crtbegin_so.o -lGLESv2 -llog -lz -lm

D:\android-ndk-r16b/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -D__ANDROID_API__=16 -target aarch64-none-linux-android -gcc-toolchain D:\android-ndk-r16b/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 -Wl,--exclude-libs,libgcc.a -...
原创
61阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一七九)fatal error: ‘features.h‘ file not found

D:\android-ndk-r22/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -c -D__ANDROID_API__=16 -target aarch64-none-linux-android -gcc-toolchain D:\android-ndk-r22/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 -DANDROID_HAS_WSTRING --sysroot
原创
90阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一七八)Android的arm64-v8a、armeabi-v7a、armeabi、x86

armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。x86: 平板、模拟器用得比较多。x86_64: 64位的平板。停留在arm-v7a一般为了减少安装包大小,因为如果加上arm64-v8a安装包会大很多。如果只用arm64-v8a则旧一点的手机用不了,但是.
原创
43阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一七七)Android的AVD Manager和SDK Manager

Andorid提供两个管理工具:AVD Manager和SDK ManagerAVD指Android Virtual Device,无论是在做安卓开发或者安卓测试都需要设备来运行、调试APP应用程序。所以在做APP自动化测试之前一定要准备好一台模拟器、一台安卓手机SDK指Software Develop KitAVD Manager负责管理虚拟设备SDK Manager负责管理软件开发包,比如Android9 Android10...
原创
24阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一七六)Qt for Android环境搭建

https://www.cnblogs.com/MakeView660/p/11206268.html1、JDK安装下载安装jdk-15.0.1_windows-x64_bin.zip https://www.oracle.com/java/technologies/javase-jdk15-downloads.html配置环境变量JAVA_HOME-D:\jdk-15.0.1CLASSPATH-.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar.
原创
91阅读
0评论
0点赞
发布博客于 2 月前

openGL之API学习(一六五)glGetError和gluErrorString配合使用获取opengl错误

GLenum errorNo = glGetError();const char* error = (char*)gluErrorString(errorNo);
原创
31阅读
0评论
0点赞
发布博客于 2 月前

osg学习(五十一)Warning: detected OpenGL error ‘invalid operation‘ at after RenderBin::draw(..)

原因是什么?
原创
175阅读
0评论
0点赞
发布博客于 2 月前

osg学习(五十)osg的三维模型是用显示列表来显示的

这样做的好处是速度快。也可以设置Geometry的_useVertexBufferObjects属性不使用显示列表。1、加载模型时处理顶点属性数据(位置 颜色 法线等)2、第一次裁减处理时生成显示列表3、以后的绘制直接使用显示列表...
原创
38阅读
0评论
0点赞
发布博客于 2 月前

openGL之API学习(一六四)显示列表display list

1什么是显示列表OpenGL显示列表(Display List)是由一组预先存储起来的留待以后调用的OpenGL函数语句组成的,当调用这张显示列表时就依次执行表中所列出的函数语句。2显示列表的优势2.1矩阵操作大部分矩阵操作需要OpenGL计算逆矩阵,矩阵及其逆矩阵都可以保存在显示列表中。2.2光栅位图和图像程序定义的光栅数据不一定是适合硬件处理的理想格式。当编译组织一个显示列表时,OpenGL可能把数据转换成硬件能够接受的数据,这可以有效地提高画位图的速度。2.3光、材质、光照
原创
37阅读
0评论
0点赞
发布博客于 2 月前

openGL之API学习(一六三)glGet函数

voidglGetBooleanv( GLenumpname, GLboolean *params);voidglGetFloatv( GLenumpname, GLfloat *params);voidglGetIntegerv( GLenumpname, GLint *params);GL_ACTIVE_TEXTUREparams返回一个表示活动多重纹理单元的值。初始值为GL_TEXTURE0。请参阅glAct...
原创
38阅读
0评论
0点赞
发布博客于 2 月前

osgEarth的Rex引擎原理分析(一二一)osgEarth::TileRasterizer功能详解

目标:(五十二)中的问题123本质是一个相机,用于将下面的节点渲染到纹理中。src\osgEarth\TileRasterizerclass OSGEARTH_EXPORT TileRasterizer : public osg::Camera{}rex引擎用到了该节点src\osgEarthDrivers\engine_rex\RexTerrainEngineNode.cppvoidRexTerrainEngineNode::setMap(const Map* map,.
原创
57阅读
0评论
0点赞
发布博客于 2 月前

openGL之API学习(一六二)glActiveTexture和glClientActiveTexture

glClientActiveTexture specifically only affects subsequentglTexCoordPointer calls (for vertex arrays), rather than glTexCoordcalls (for display lists or immediate mode), which is whatglActiveTexture is used for.Because these states are stored ...
原创
42阅读
0评论
0点赞
发布博客于 2 月前

openGL之API学习(一六一)glActiveTexture和glBindTexture

glActiveTexture负责激活纹理单元glBindTexture负责使用纹理单元中的某一种纹理类型一个纹理单元可以有多种纹理类型GL_TEXTURE_1D、GL_TEXTURE_2D等
原创
88阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一七五)Qt的QSGSimpleTextureNode

提供QSGSimpleTextureNode类是为了方便使用QML场景图轻松绘制纹理内容。警告:简单的纹理节点类必须具有纹理,然后才能添加到要渲染的场景图中。警告:仅当与OpenGL或Qt Quick场景图的软件后端一起运行时,该实用程序类才起作用。对于合适的跨平台替代方案,最好通过QQuickWindow :: createImageNode()或QSGEngine :: createImageNode()使用QSGImageNode。...
原创
41阅读
0评论
0点赞
发布博客于 2 月前

C++学习(一七四)Qt的渲染器Render

默认渲染器着重于两种优化渲染的主要策略:批处理调用,以及在GPU上保留几何图形。1、批处理在编写传统的2D API(例如QPainter,Cairo或Context2D)以处理每帧数千个单独的绘制调用的情况下,OpenGL是纯硬件API,当绘制调用的次数非常少且状态更改保持为低时,其性能最佳。最低。考虑以下用例:绘制此列表的最简单方法是逐个单元地进行。首先,绘制背景。这是特定颜色的矩形。在OpenGL术语中,这意味着选择着色器程序进行纯色填充,设置填充颜色,设置包含x和y偏移量的转换矩阵,然
原创
188阅读
1评论
1点赞
发布博客于 2 月前

C++学习(一七三)Qt输出Item组件的所有属性信息

代码:import QtQuick 2.9import QtQuick.Window 2.2import QtQuick.Layouts 1.3import QtQuick.Controls 2.4import QuickOSGEarth 1.0Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Button{ id: createCylin
原创
132阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一七二)Qt如何确定item元素的上下次序

Item 除了 x 、 y 属性。事实上另一个 z 属性,用来指定图元在场景中的 Z 序。z 属性的类型是 real 。数值越小,图元就越垫底(远离我们),数值越大,图元就越靠近我们。Item 的属性 opacity 能够指定一个图元的透明度。取值在 0.0 到 1.0 之间。结合 Z 序和透明度,有时能够达到不错的效果。如果不指定z,则按照先后顺序设置,先出现的元素z较小,后出现的元素z较大。import QtQuick 2.9import QtQuick.Window 2.2import
原创
58阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一七一)QQmlComponent

QQmlComponent类封装了QML组件定义。组件是具有良好定义的接口的可重用的,封装的QML类型。可以从QML文件创建QQmlComponent实例。例如,如果有一个main.qml文件,如下所示: import QtQuick 2.0 Item { width: 200 height: 200 }以下代码将此QML文件作为组件加载,使用create()创建此组件的实例,然后查询Item的width值: QQmlEngine *engine =
原创
141阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一七零)类型安全type-safe 线程安全thread-safe

类型安全意味着编译器在编译的时候会验证类型,如果你尝试将一个错误的类型分配给一个变量时,会抛出一个错误。一个函数被称为线程安全的(thread-safe),当且仅当被多个并发进程反复调用时,它会一直产生正确的结果。如果一个函数不是线程安全的,我们就说它是线程不安全的(thread-unsafe)。...
原创
109阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六九)getter setter的翻译

getter 读访问器setter 写访问器
原创
85阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六八)qt如何构建场景树

1、qquickitem2、node
原创
195阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六七)qquick的Scroll、Stack和Swipe区别

ScrollStackSwipe
原创
226阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六六)无法连接到进程内(in-process)QML调试器

https://blog.csdn.net/libaineu2004/article/details/106188873
原创
144阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六六)qt无法查看局部变量

鼠标放在局部变量上提示“expression too complex”。在调试窗口也看不到局部变量的值。这应该是qt的一个bug,https://bugreports.qt.io/browse/QTCREATORBUG-24180
原创
150阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六五)qt是如何决定使用何种操作系统窗口

通过下面的factory创建,key为“windows”代表windows系统。corelib\plugin\qfactoryloader_p.htemplate <class PluginInterface, class FactoryInterface, typename ...Args>PluginInterface *qLoadPlugin(const QFactoryLoader *loader, const QString &key, Args &&
原创
116阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六四)qt是如何决定使用opengl的版本

1.0 4.0 4.5等
原创
207阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六三)qt是如何决定使用何种图形API

OpenGL Vulkan Mental等
原创
113阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六二)qtcreator调试时提示无法访问

https://jingyan.baidu.com/article/72ee561af1a1f3a16038df32.html将use python dumper前面的勾去掉即可
原创
126阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六一)QSGSimpleTextureNode工作过程

qt场景图的纹理节点,其纹理显示到窗口的过程如下:
原创
144阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一六零)QQuickItem是如何显示到窗口的

以opengl为例
原创
156阅读
0评论
0点赞
发布博客于 3 月前

openGL之API学习(一六零)SwapBuffers、wglSwapBuffers

这两个是windows的api而不是opengl的api。moduleIsNotOpengl32() ? wglSwapBuffers(dc) : SwapBuffers(dc);SwapBuffersBOOL SwapBuffers( HDC Arg1);如果指定设备上下文引用的窗口的当前像素格式包括后缓冲区,则SwapBuffers函数将交换前缓冲区和后缓冲区。Arg1指定设备上下文。如果此设备上下文引用的窗口的当前像素格式包括后缓冲区,则该函数将交换前缓冲区和后缓冲区
原创
243阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一五九)Qt的场景图Scene Graph

例如,假设用户界面包含十个项目的列表,其中每个项目都有背景色,图标和文本。使用传统的绘图技术,这将导致30次绘图调用和类似数量的状态更改。另一方面,场景图可以重组原始图元以进行渲染,以便在一次调用中绘制所有背景,然后绘制所有图标,然后绘制所有文本,从而将绘制调用的总数减少到仅3个。批处理和状态更改减少这样可以大大提高某些硬件的性能。...
原创
365阅读
1评论
0点赞
发布博客于 3 月前

C++学习(一五八)QQuickItem、QQuickWidget、QQuickView、QQuickWindow关系

class Q_QUICKWIDGETS_EXPORT QQuickWidget : public QWidget{}
原创
182阅读
0评论
0点赞
发布博客于 3 月前

osg学习(五十)qt的qml集成osg和osgearth

https://blog.csdn.net/hai7song/article/details/104776127https://zhuanlan.zhihu.com/p/37637802?utm_source=wechat_session
原创
205阅读
0评论
0点赞
发布博客于 3 月前

C++学习(一五七)QQuickFramebufferObject、QSGFramebufferObjectNode、QOpenGLFramebufferObject关系

class Q_QUICK_EXPORT QQuickFramebufferObject : public QQuickItem{ class Q_QUICK_EXPORT Renderer { virtual QOpenGLFramebufferObject *createFramebufferObject(const QSize &size); friend class QSGFramebufferObjectNode; }}...
原创
189阅读
0评论
1点赞
发布博客于 4 月前

C++学习(一五六)QQuickFramebufferObject的原理

先渲染到帧缓冲FBO,再将帧缓冲FBO的内容拷贝到当前窗口为什么要通过FBO转以下呢,为什么不直接渲染到当前窗口呢,难道是为了适应桌面、移动等多终端吗qtdeclarative\src\quick\items\qquickframebufferobject.cpp void render() { if (renderPending) { renderPending = false; fbo->bind(); /
原创
200阅读
0评论
0点赞
发布博客于 4 月前

C++学习(一五五)qt离线安装

不要填login的Email、Password即可
原创
97阅读
0评论
0点赞
发布博客于 4 月前

C++学习(一五四)qt No login url found

应该是qt服务器连接有问题,隔天再试试就有可能连接上了。
原创
121阅读
0评论
0点赞
发布博客于 4 月前

C++学习(一五三)如何安装qt调试库pdb

以qt5.12为例,安装包里没有
原创
99阅读
0评论
0点赞
发布博客于 4 月前

C++学习(一五二)vs内外版本的对应关系

Known Name Version Latest KB / Revision Visual Studio 6 6 Service Pack 6; 6.0.3790.0; VB6.0-KB290887-X86.exe Visual Studio .NET (2002) 7 Service Pack 1; KB837234 Visual Studio 2003 7 Service Pack 1; KB918007 Visual Studio 20
原创
23阅读
0评论
0点赞
发布博客于 4 月前

openGL之API学习(一五九)Mesa llvmpipe

Mesa项目最初作为 OpenGL规范的开源实现。现在扩展为兼容更多的 graphics APIS:including OpenGL ES (versions 1, 2, 3), OpenCL, OpenMAX, VDPAU, VA API, XvMC and Vulkan。 同时,各种显示设备的驱动程序开始允许Mesa库兼容,包括软件仿真到先进gpu的硬件加速。Mesa还和其他几个开源项目相关:the Direct Rendering Infrastructure and X.org ,以便在Linux、
原创
183阅读
0评论
0点赞
发布博客于 4 月前

osg学习(四十九)osg的STATIC、DYNAMIC 的作用

osg/objectenum DataVariance { DYNAMIC, STATIC, UNSPECIFIED };/** Set the data variance of this object. * Can be set to either STATIC for values that do not change over the lifetime of the o...
原创
54阅读
0评论
0点赞
发布博客于 4 月前

openGL之API学习(一五八)glFlush、glFinish、glSwapBuffer

glFlush就是强制刷新吧,要知道OPENGL是使用一条渲染管线线性处理命令的,一般情况下,我们提交给OPENGL的指令并不是马上送到驱动程序里执行的,而是放到一个缓冲区里面,等这个缓冲区满了再一次过发到驱动程序里执行;很多时候只有几条指令是填充不满那个缓冲区的,这就是说这些指令根本没有被发送到驱动里,所以我们要调用glFlush来强制把这些指令送到驱动里进行处理。glSwapBuffer其实就是交换缓冲区啦,估计是你的程序使用的是双缓冲技术吧;用了这种技术的话,你所有的绘制都是绘制到一个后台的缓冲区
原创
87阅读
0评论
0点赞
发布博客于 4 月前

C++学习(一五一)hwnd hdc hglrc

HWND:h是类型描述,表示句柄(handle),Wnd是变量对象描述,表示窗口,所以hWnd表示窗口句柄。Microsoft Windows运行环境,通过给应用程序中的每个窗体和控件分配一个句柄来标识他们。hWnd属性用于Windows API调用。许多Windows运行环境函数需要活动窗口的hWnd作为参数。HDC:设备上下文是一种包含有关某个设备的绘制属性信息的Windows数据结构。所有绘制调用都通过设备上下文对象进行,这些对象封装了用于绘制线条,形状和文本的Windows API。HGLR
原创
727阅读
1评论
0点赞
发布博客于 5 月前

openGL之API学习(一五七)glGetError

这里通过循环方式设置错误标志为GL_NO_ERROR不起作用?????GLenumglGetError(void);glGetError返回错误标志的值。每个可检测的错误都分配有数字代码和符号名称。发生错误时,错误标志将设置为相应的错误代码值。在调用glGetError(返回错误代码)之前,不会记录其他错误,并将标志重置为GL_NO_ERROR。如果对glGetError的调用返回GL_NO_ERROR,则自上次调用glGetError或自GL初始化以来,没有可检测到的错误。 为了允许分...
原创
198阅读
0评论
0点赞
发布博客于 5 月前

C++学习(一五零)qt的公有类、私有类、Q_Q、Q_D、二进制兼容

1、二进制兼容2、公有类、私有类3、Q_Q、Q_D
原创
84阅读
0评论
0点赞
发布博客于 5 月前

osg学习(四十八)Windows Error #2000

Windows Error #2000: Win32WindowingSystem::OpenGLContext() - Unable to restore current OpenGL rendering context. Reason: 无效的像素格式。执行完osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("mb_tiles.earth",myReadOptions);后再执行 QOpenGLFramebuffe
原创
712阅读
3评论
0点赞
发布博客于 5 月前

unreal虚幻引擎学习(二)UE4工程无法调试

工程如下设置即可
原创
83阅读
0评论
0点赞
发布博客于 5 月前

unreal虚幻引擎学习(一)史上最全的Unreal Engine 4学习资料整理

官方官方文档中文版 http://api.unrealengine.com/CHN/ 英文版 https://docs.unrealengine.com/en-us/虚幻学院(英文教程,未来可能有汉化)https://academy.unrealengine.com/官方B站https://space.bilibili.com/138827797/#/C++【侯捷】《C++系统工程师》课程 链接:https://pan.baidu.com/s/1ScdbFxNbW624ou8
原创
495阅读
0评论
5点赞
发布博客于 5 月前

osg学习(四十七)osgEarth::Util::AutoClipPlaneCullCallback

根据视点距离地面的高度调整near、far的比率,避免距地面太近时看不到地面的东西。原理为:osgEarthUtil/AutoClipPlaneHandler.cpp GeoPoint loc; if ( map ) { loc.fromWorld( map->getSRS(), eye ); }
原创
97阅读
0评论
0点赞
发布博客于 5 月前

osg学习(四十六)osg的UI控件

ControlCanvas* canvas = ControlCanvas::getOrCreate( view ); Container* mainContainer; if ( userContainer ) { mainContainer = userContainer; } else { mainContainer = new VBox(); mainContainer->setA...
原创
61阅读
0评论
0点赞
发布博客于 5 月前

osg学习(四十五)有关倾斜摄影的osgb、gltf、3DTiles格式

1、osgb是倾斜摄影的格式,osg可以直接读取osgb文件OSGB file is an OpenSceneGraph Binary Scene Data. The OpenSceneGraph is an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scienti
原创
534阅读
0评论
0点赞
发布博客于 5 月前

osg学习(四十四)读取earth文件的几种方式

1、osg::Group* node = MapNodeHelper().load(arguments, &viewer);2、 osg::ref_ptr<osgDB::Options> myReadOptions = osgEarth::Registry::cloneOrCreateOptions(0); Config c; c.add("elevation_smoothing", false); TerrainOptions to(c);
原创
138阅读
0评论
0点赞
发布博客于 5 月前

C++学习(一四九)有关remoteobjects

在qt的pro文件中:QT += quick remoteobjects QtRO是Qt RemoteObjects的简称,是从5.9开始Qt官方推出的一个用于进程间通信(IPC)的新模块。虽然该模块目前仍处于TP阶段,但已经足够稳定。由于项目开发需要,我们将一个大项目划分成了若干个子工程,各个子工程都是独立的程序,因此需要使用IPC来进行各模块间的协同工作。详见文章:https://blog.csdn.net/x85371169/article/details/81427715...
原创
83阅读
0评论
0点赞
发布博客于 6 月前

C++学习(一四八)QML中的anchors锚布局

QML的布局方式一般采用两种,一种就是直接设置,X与Y坐标的值。一种是采用相对位置布局,anchors锚布局。使用锚布局的能够使界面更紧凑,更有整体化。锚布局相当于Qt的 Grid,HBox,VBox layout。锚布局包含器个属性:left, horizontalCenter, right, top, verticalCenter, baseline, and bottom....
原创
114阅读
0评论
0点赞
发布博客于 6 月前

C++学习(一四七)QML中的property

类似于成员变量,不同的是可以初始化,并且没有public、private、protected等限制。Rectangle { id: rootRect property color theColor: "green" property color previousColor: rootRect.color property color nextColor width: 100; height: 100 color: "red"
原创
597阅读
0评论
1点赞
发布博客于 6 月前

C++学习(一四六)QML中Loader的source和sourceComponent属性

QML的Loader元素经常备用来动态加载QML组件。可以使用source属性或者sourceComponent属性加载。这个元素最有用的地方是它能在qml组件需要的时候再创建,即延迟创建QML的时间。source对应qml文件sourceComponent对应id Loader { id: pageLoader sourceComponent: rect } Loader { id: pageLoade
原创
180阅读
0评论
0点赞
发布博客于 7 月前