自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++学习(九十一)运算符优先级

优先级 运算符 说明 结合性 1 :: 范围解析 自左向右 2 ++-- 后缀自增/后缀自减 () 括号 [] 数组下标 . 成员选择(对象) −> 成员选择(指针) 3 ++-- 前缀自增/前缀自减 自右向左 +− 加/减 !~ 逻辑非/按位取反 (type) 强制类型转换 * 取指针指向的值 & 某某的地址...

2020-05-31 18:29:30 153

原创 openGL之API学习(一二四)step

genType step (genType edge, genType x)genType step (float edge, genType x)如果x < edge,返回0.0,否则返回1.0

2020-05-31 18:10:18 1491

原创 openGL之API学习(一二三)mix

在两个值之间做线性混合计算mix(x,y,a) a控制混合结果实际的计算过程为return x(1-a) +y*a

2020-05-31 18:00:05 1388

原创 openGL之API学习(一二二)smoothstep

该函数用于求解两个值之间的样条插值。float smoothstep(float edge0, float edge1, float x) vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x) vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x) vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x)vec2 smoothstep(float edge0, floa

2020-05-31 17:56:01 774

原创 osg学习(四十一)win32窗体像素格式PixelFormat

每一个设备上下文都要有一个像素格式作用是什么1、获取像素格式2、设置像素格式

2020-05-30 22:10:47 592

原创 osg学习(四十)osg::Viewer的realize创建窗体的几种方式

能够根据屏幕数,创建不同位置的窗口。void Viewer::realize(){ //在某一个屏幕上创建无边框窗口 //在某一个屏幕上创建正常窗口 //在所有屏幕上创建正常窗口,一个窗口,窗口位置可以跨屏幕 osgViewer::SingleWindow实现 //在某一个屏幕上创建全屏窗口 osgViewer::SingleScreen实现 //在所有屏幕上创建全屏窗口,,一个窗口,窗口位置可以跨屏幕 osgView

2020-05-30 18:45:21 916

原创 osg学习(三十九)DisplaySettings

DisplaySettings是osg的全局单实例变量,类似osg的Registry。主要记录窗口的一些显示设置,比如窗口尺寸、多重纹理采样数等,osg在创建窗口时会从该变量中读取信息,这个变量中的信息可以通过命令行输入也可以通过环境变量输入,但是不支持通过代码修改。1、创建时机osg/DisplaySettomgs.cppOSG_INIT_SINGLETON_PROXY(ProxyInitDisplaySettings, DisplaySettings::instance())osg/.

2020-05-30 18:28:00 1999

原创 openGL之API学习(一二一)wglChoosePixelFormatARB

mirosoft实现的opengl函数,msdn上没有该函数的介绍,只能找到ChoosePixelFormathttps://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-choosepixelformat通过wglGetProcAddress能获取到wglChoosePixelFormatARB的函数指针。...

2020-05-30 13:25:21 1146

原创 C++学习(九十)android的jni下Android、Application两个mk文件

Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库。它实际上是编译系统解析一次或多次的微小 GNU makefile 片段。Android.mk的语法支持将源文件分组为模块。模块是静态库、共享库或独立的可执行文件。您可在每个Android.mk文件中定义一个或多个模块,也可在多个模块中使用同一个源文件。Android.mk 文件用于定义 Application.mk、编译系统和环境变量所未定义的项目范围设置。它还可替换特定模块的项目范围设置。Ap...

2020-05-29 06:42:54 313

原创 C++学习(八十九)android的jni原理及使用

1、编写java程序,定义和使用本地方法public class HelloWorld { public native void displayHelloWorld();//所有native关键词修饰的都是对本地的声明 static { System.loadLibrary("hello");//载入本地库 } public static void main(String[] args) { new HelloWorld().dis...

2020-05-29 06:15:43 267

原创 C++学习(八十八)android支持stl

android是支持标准模板库的,库目录在system/lib/libstdc++.so需要在Application.mk文件中添加APP_STL := stlport_staticAPP_STL还有别的取值:system -> Use the default minimal C++ runtime library.stlport_static -> Use STLport built as a static library.stlport_shared -> Use

2020-05-29 06:08:47 316

原创 osg学习(三十八)Android窗口创建过程

osg::ref_ptr<osgViewer::Viewer> _viewer;_viewer = new osgViewer::Viewer();_viewer->setUpViewerAsEmbeddedInWindow(x, y, width, height);_viewer->realize();

2020-05-27 06:50:10 402

原创 C++学习(八十七)mm cpp文件

mm :源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名除此之外还有m文件.m :源代码文件。这是典型的源代码文件扩展名,可以包含Objective-C和C代码。cpp是普通的C++源代码文件...

2020-05-26 06:17:36 807

原创 osg学习(三十七)如何实现跨平台创建窗口

1、在camkelist中设置选项2、配置camke工程时传入跨平台系统

2020-05-25 21:19:08 595

原创 osg学习(三十六)OSG_SCREEN screenNum的作用

对多个显示器有意义,决定窗口在哪个显示器上显示,默认为0,即当前主显示器。osgViewer/GraphicsWindowWin32.cppbool GraphicsWindowWin32::determineWindowPositionAndStyle( unsigned int screenNum, int clientAreaX, .

2020-05-25 06:40:43 331

原创 osg学习(三十五)设置窗体抗锯齿

通过多重采样达到抗锯齿的目的osg/GraphicsContext.cppGraphicsContext::Traits::Traits(DisplaySettings* ds): x(0), y(0), width(0), height(0), windowDecoration(false), supportsResize(true),

2020-05-25 06:23:55 1753

原创 osg学习(三十四)像机Camera、窗口GraphicContext、场景Scene等的关系

2020-05-25 05:55:20 493

原创 openGL之API学习(一二零)glsl的元素分量表示形式

rgbaxyzwstpq

2020-05-24 16:51:00 160

原创 openGL之API学习(一一九)glTexEnv

用来设置纹理的环境参数,纹理环境参数主要控制纹理如何与片元颜色进行计算的。该函数属于固定管线的函数,4.0以上已经不支持该函数了。void glTexEnvf( GLenum target, GLenum pname, GLfloat param);void glTexEnvi( GLenum target, GLenum pname, GLint param);Parameterstarget Specifies a te...

2020-05-24 10:55:38 443

原创 osg学习(三十三)setTextureAttributeAndModes的编号和纹理单元的关系

结论:不存在对应关系setTextureAttributeAndModes的编号主要是为了管理本级StateSet中的纹理纹理在进入GPU时,会为其分配新的纹理单元,并上传纹理到该纹理单元

2020-05-24 08:06:49 1462

原创 osg学习(三十二)stateset中的_textureAttributeList、_textureModeList

typedef std::pair<Type,unsigned int> TypeMemberPair;typedef std::pair<ref_ptr<StateAttribute>,StateAttribute::OverrideValue> RefAttributePair;typedef std::map<StateAttribute::TypeMemberPair,RefAttributePair> Attri...

2020-05-24 06:42:04 469

原创 osg学习(三十一)osg、Qt的image

1、格式转换osg::Image* CommonTools::covertImage(QImage image){ QImage glImage = QGLWidget::convertToGLFormat(image); unsigned char* data = new unsigned char[glImage.byteCount()]; for (int i = 0; i < glImage.byteCount(); i++) { data[i] = glImage.b

2020-05-22 06:48:00 2694

原创 C++学习(八十六)QT在console中使用qpainter

qpainter在qt的gui模块中,console在core模块中。因此建立的console模块默认是不能使用qpainter的,为了能使用qpainter,需要增加gui模块,即:CONFIG += console gui并且在main函数中添加QGuiApplication a(argc, argv);如果没有上面的这两部操作,使用qpainter会报错:ASSERT failure in QGuiApplication::font(): "no QGuiApplicatio

2020-05-22 06:01:15 626

原创 C++学习(八十五)LARGE_INTEGER提供64位整数

提供64位整数1、定义typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; } DUMMYSTRUCTNAME; struct { DWORD LowPart; LONG HighPart; } u; LONGLONG QuadPart;} LARGE_INTEGER;2、使用Timer_t Tim

2020-05-20 06:44:07 487

原创 openGL之API学习(一一八)glDeleteTextures

删除由glGenTextures创建的纹理对象。删除后的纹理对象ID可以重复使用。void glDeleteTextures( GLsizei n, const GLuint * textures);n Specifies the number of textures to be deleted. 指定删除的纹理对象数textures Specifies an array of textures to be deleted. 指定一组纹理对...

2020-05-17 16:47:48 802

原创 C++学习(八十四)explicit和implicit

在编程过程中, 我们习惯上使用explicit或者implicit关键字实现构造函数的显式或者隐式显示。explicit关键字:只能修饰只有一个参数的构造函数,或者有多个参数,但是除第一个参数外其他的参数都有默认值。它的作用是表明构造函数是显式方式显示的。implicit关键字:与explicit对应,他表示隐式的进行数据转换。注:C++中不存在这个关键字,C#等编程语言中才有,此处仅仅是为了说明。explicit此关键字只能对用户自己定义的对象起作用,不对默认构造函数起作用此关键字.

2020-05-17 13:43:01 2083

原创 C++学习(八十三)std的typeid 、type_info

vcruntiem_typeinfo.hclass type_info{public: type_info(type_info const&) = delete; type_info& operator=(type_info const&) = delete; size_t hash_code() const throw() { return __std_type_info_hash(&_Data); }.

2020-05-17 07:55:20 2305

原创 osg学习(三十)osg的Texture、TextureObject、TextureObjectSet、TextureObjectManager

1、设置纹理2、使用纹理3、删除纹理

2020-05-17 07:19:18 1064

原创 osgEarth的Rex引擎原理分析(一一三)state获取着色器文件中有效define的过程

目标:(一零九)中的问题196状态机State在遍历每一个状态集StateSet时会记录其中的define到其_defineMap。如果shaderDefines(一般来自于着色器Shader或着色器程序Program)和_defineMap中属性为ON重合,则会形成一条有效的define。osg/State.cppstd::string State::getDefineString(const osg::ShaderDefines& shaderDefines){ ..

2020-05-16 07:52:01 516

原创 osgEarth的Rex引擎原理分析(一一二)每帧会重复生成着色器程序吗

目标:(一一一)中的问题198一般是不会的,但是着色器程序状态改变的话还是会的。着色器程序的状态用其中的着色器向量来表示,如果着色器向量的长度和其中的内容没有变化,就认为着色器程序的状态没有变化。着色器程序在创建完成后,会放入缓存,下一个帧循环从缓存中取出使用即可,如果缓存中不存在才会再次生成着色器程序。这也说明可以在程序运行时动态地向着色器程序添加着色器代码。1、着色器程序写入缓存osgEarth/VirtualProgram.cppvoidVirtualProgram::apply

2020-05-16 07:19:57 538

原创 osgEarth的Rex引擎原理分析(一一一)着色器上下文环境的准备过程

目标:(一一零)中的问题197osg/Shader.cppShader::PerContextShader* Shader::getPCS(osg::State& state) const{ if( getType() == UNDEFINED ) { OSG_WARN << "Shader type is UNDEFINED" << std::endl; return 0; } if (..

2020-05-15 07:01:00 575

原创 C++学习(八十二)std set map元素顺序

1、set的元素顺序set中存放的为数(整数,浮点数......),在set中会按从小到大排列这些数set 中存放的为string,存入的string会按字母表顺序排列至于存放类的话,还可以自己定义排列规则2、map的元素顺序为了实现快速查找,map内部本身就是按序存储的(比如红黑树)。在我们插入<key, value>键值对时,就会按照key的大小顺序进行存储,默认是升序(less)。template < class Key, class T, class Co

2020-05-15 06:18:05 1368

原创 osgEarth的Rex引擎原理分析(一一零)state中_defineMap构建过程

目标:(一零九)中的问题195是在绘制过程中,每经过一个状态集StateSet就会将该状态集中的模式、属性、一致变量、定义都放入State的相应变量中。定义都放入_defineMap.osg/State.cppvoid State::pushStateSet(const StateSet* dstate){ pushModeList(_modeMap,dstate->getModeList()); pushAttributeList(_attribu.

2020-05-13 06:49:52 364

原创 osgEarth的Rex引擎原理分析(一零九)19级瓦片分辨率估算

目标:(一零八)中的问题194rex的瓦片分级为0、1、...、19第0级角度分辨率 180°第1级角度分辨率 180°/2...第19级角度分辨率 180°/2^19=0.00034332275390625°每个瓦片默认像素为256*256,则每个像素的角度分辨率为180°/2^19/256=0.0000013411045074462890625°,在赤道位置,地球半长轴简单取6400km,则每个像素的长度分辨率为:6400*(180°/2^19/256*3.14/18

2020-05-12 06:16:05 1464

原创 openGL之API学习(一一七)预编译指令

预处理指令以#开头,#号之前不能有除了空白字符之外的任何字符。每一个指令独占一行。 预处理指令只能使用上面列出的指令,使用其他未定义指令会报错。完整的预处理器指令如下:##define#undef#if#ifdef#ifndef#else#elif#endif#error#pragma#extension#version#line下面的这个操作符也是合法的:#define and #undef这两个和C++中的用法完全一样,不做过多说明#if, #ifde

2020-05-11 06:36:36 690

原创 osgEarth的Rex引擎原理分析(一零八)章节目录

目标:(一零七)中的问题1911、导论2、三棵树场景树、状态树、渲染树3、资源调度4、着色器5、设计模式6、实战应用待继续分析列表:9、earth文件中都有哪些options((九)中问题)10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)11、rex地理信息引擎的四梁八柱((九)中问题)12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中问题...

2020-05-11 06:00:22 472

原创 osgEarth的Rex引擎原理分析(一零七)rex的状态树和渲染树

目标:(一零六)中的问题1901、状态树rex|terrain----------|surface|layer|RenderLeaf2、渲染树Stage|bin|Layer待继续分析列表:9、earth文件中都有哪些options((九)中问题)10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)11、rex地理信息引擎的四梁八柱((九)中问题)12、osgEarth::TerrainEng...

2020-05-10 18:12:39 505

原创 osgEarth的Rex引擎原理分析(一零六)术语定义

目标:(一零五)中的问题189VirtualProgram:虚拟着色器程序,之所以是虚拟的,是因为它是osgEarth用来组织着色器代码的,而不是GPU的,最终虚拟的着色器程序会转换为GPU使用的真正的着色器程序。使用虚拟着色器程序可以让用户更加专注于着色器程序的开发上,避免陷入与GPU交互的不必要的细节问题解决上。Morph:渐变或混合。主要用于高程和影像的均匀过度处理。...

2020-05-05 07:15:05 774

原创 osgEarth的Rex引擎原理分析(一零五)如何将文字变为图片

目标:(一零四)中的问题187QSize size(200,200); //指定图片大小;QImage image(size,QImage::Format_ARGB32); //以ARGB32格式构造一个QImage,//image.fill(qRgba(0,0,0,100));//填充图片背景,120/250为透明度QPainter painter(&image...

2020-05-04 07:44:58 533

原创 osgEarth的Rex引擎原理分析(一零四)rex如何在地球上绘制一张图片

目标:(一零三)中的问题186借鉴例子osgearth_annotation.cpp,这不是直接在瓦片上绘制的,因为它压住了瓦片上的边界线。应当是rex球渲染完成后在渲染的。和绘制一个几何图形,设置几何图形的问题没有什么区别。 osgEarth::Annotation::ImageOverlay* imageOverlay = 0L; osg::ref_ptr<osg...

2020-05-03 07:49:59 1156 1

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关注的人

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