自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 openGL之API学习(九十八)glGetProgramInfoLog

返回着色器程序的日志信息。void glGetProgramInfoLog( GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog);program Specifies the program object whose information log is...

2019-06-30 23:49:01 882

原创 openGL之API学习(九十七)glGetProgramiv

获取着色器程序的属性值void glGetProgramiv( GLuint program, GLenum pname, GLint *params);program Specifies the program object to be queried.指定着色器程序对象pname Specifies the object par...

2019-06-30 23:30:11 1015

原创 C++学习(三十六)struct与class

struct是C语言的产物,C++为了兼容C保留了struct,struct和class基本相同,除了以下几点:1、struct没有多态和虚拟继承2、默认继承权限不同,class继承默认是private继承,而struct默认是public继承3、默认成员访问权限不同。class的成员默认是private权限,struct默认是public权限。4、class还可用于定义模板参数,...

2019-06-30 07:27:54 214

原创 C++学习(三十五)delete与delete[]

记住基本原则:new申请的内存,释放时用delete,使用new [ ]申请的内存释放时要用delete [ ]。下面解释原因:假设通过new申请了一个对象数组,注意是对象数组,返回一个指针,对于此对象数组的内存释放,需要做两件事情:一是释放最初申请的那部分空间,二是调用析构函数完成清理工作。对于内存空间的清理,由于申请时记录了其大小,因此无论使用delete还是delete[ ]都能将这...

2019-06-30 07:13:17 236

原创 C++学习(三十四)stdlib与cstdlib

C语言中是有#include <stdlib.h>的。 这是C语言标准的包含库头文件stdlib.h的语句。在代码中引用此句后,就可以使用stdlib.h中的函数,而不会出现未声明的警告。在C++中也可以使用#include <stdlib.h>,因为C++兼容了C语言中的操作。不过一般更推荐使用C++风格的头文件,即#include <cstdlib>。c...

2019-06-30 06:43:11 2531

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

C语言优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[整型表达式] 左到右 () ...

2019-06-29 22:20:16 148

原创 openGL之API学习(九十六)glGetProgramBinary

生成着色器程序已经编译、链接过的二进制数据。void glGetProgramBinary( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);program Specifies the name of ...

2019-06-29 06:22:54 910

原创 openGL之API学习(九十五)glProgramBinary

将着色器程序的二进制数据加载进着色器程序。二进制数据由glGetProgramBinary生成。使用二进制数据可以避免编译开销,并且不用呈现shader的源代码。OpenGL并不指定任何二进制格式,二进制格式完全由各个实现的供应商决定,这意味着使用glProgramBinary的程序的可移植性不强,即使同一供应商的不同版本之间,二进制格式也可能改变。所以,为了确保程序兼容,在调用glProgram...

2019-06-28 23:34:26 2039

原创 C++学习(三十二)初始化列表

从概念上来讲,构造函数的执行可以分成两个阶段,初始化阶段和计算阶段,初始化阶段先于计算阶段。初始化阶段所有类类型(class type)的成员都会在初始化阶段初始化,即使该成员没有出现在构造函数的初始化列表中。 计算阶段一般用于执行构造函数体内的赋值操作。...

2019-06-27 06:44:38 119

原创 C++学习(三十一)性能测试工具gperftools

gperftools是Google开源的一款非常使用的性能分析工具集。github地址:https://github.com/gperftools/gperftools主要包括:性能优异的malloc free内存分配器tcmalloc;基于tcmalloc的堆内存检测和内存泄漏分析工具heap-profiler,heap-checker;基于tcmalloc实现的程序CPU性能监测工具cpu...

2019-06-25 06:46:42 584

原创 C++学习(三十)静态代码检查工具cppcheck

Cppcheck是一种开源的C/C++代码缺陷静态检查工具,不同于C/C++编译器及其它分析工具,Cppcheck只检查编译器检查不出来的bug,不检查语法错误。官网:http://cppcheck.net/执行的检查包括:1. 自动变量检查2. 数组的边界检查3. class类检查4. 过期的函数,废弃函数调用检查5. 异常内存使用,释放检查6. 内存泄漏检查,主要...

2019-06-25 06:18:14 530

原创 C++学习(二十九)内联inline

内联函数适用能够快速执行的函数,此时使用内联省去了函数的调用开销。内联函数像宏一样都是在编译期展开,内嵌到调用处。inline省去普通函数的压栈和call,以空间换时间,仅仅省去了函数调用的开销当函数体比较小的时候, 内联该函数可以令目标代码更加高效. 对于存取函数以及其它函数体比较短, 性能关键的函数, 鼓励使用内联.一个较为合理的经验准则是, 不要内联超过 10 行的函数. 谨慎对...

2019-06-25 06:03:26 141

原创 C++学习(二十八)性能优化提升

1、减少临时变量2、减少 Implicit conversion (隐式转换)3、减少频繁的内存申请、释放转载自:http://www.708luo.com/?p=33临时变量目前遇到的一些产生临时变量的情况:函数实参、函数返回值、隐式类型转换、多余的拷贝1. 函数实参这点应该比较容易理解,函数参数,如果是实参传递的话,函数体里的修改并不会影响调用时传入的参数的值...

2019-06-24 20:58:31 466

原创 C++学习(二十八)值传递的性能问题

对于int,直接传值比传引用节省了一次解引用的开销,其效率当然会高,基本数据类型都是优化过的引用传值有两个好处:1.参数可以带回来值2.大对象无需拷贝进去对于大对象而言引用传递效率会更高...

2019-06-24 20:39:07 362

原创 C++学习(二十七)拷贝构造函数和移动构造函数

C++11之前,对象的拷贝控制由三个函数决定:拷贝构造函数(Copy Constructor)、拷贝赋值运算符(CopyAssignment operator)和析构函数(Destructor)。C++11之后,新增加了两个函数:移动构造函数(Move Constructor)和移动赋值运算符(Move Assignment opera)。C++的特点就是撇清值和引用的区别,而不是像Ja...

2019-06-24 05:50:53 734

原创 C++学习(二十七)define内存分析

#define的内存单元在程序运行前已经分配宏定义只是在预处理器里进行文本替换编译后放在常量数据区

2019-06-24 05:45:44 668

原创 C++学习(二十六)左值和右值

左值lvalue:可被引用的数据对象,例如,变量、数组元素、结构成员、引用和解除引用的指针都是左值。在C语言中,左值最初指的是出现在赋值语句左边的实体,但这是引入const之前的情况。now,常规变量和const变量都可视为左值,因为可通过地址访问它们。常规变量属于可修改的左值,const变量属于不可修改的左值。左值基本上和以前的认知没有太大的改变。右值rvalue:字面常量(用括号括起来的字...

2019-06-23 07:57:22 136

原创 C++学习(二十五)内存泄漏的几种方式

检测内存泄漏的关键是要能截获住对分配内存和释放内存的函数的调用。截获住这两个函数,我们就能跟踪每一块内存的生命周期,比如,每当成功的分配一块内存后,就把它的指针加入一个全局的list中;每当释放一块内存,再把它的指针从list中删除。这样,当程序结束的时候,list中剩余的指针就是指向那些没有被释放的内存。这里只是简单的描述了检测内存泄漏的基本原理,详细的算法可以参见Steve Maguire的&...

2019-06-21 22:47:51 362

原创 C++学习(二十四)内存泄漏检测

检测内存泄漏的关键是要能截获住对分配内存和释放内存的函数的调用。截获住这两个函数,我们就能跟踪每一块内存的生命周期,比如,每当成功的分配一块内存后,就把它的指针加入一个全局的list中;每当释放一块内存,再把它的指针从list中删除。这样,当程序结束的时候,list中剩余的指针就是指向那些没有被释放的内存。这里只是简单的描述了检测内存泄漏的基本原理,详细的算法可以参见Steve Maguire的&...

2019-06-21 22:44:34 235

原创 C++学习(二十三)原子操作

所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。

2019-06-21 06:49:41 180

原创 osg学习(四)OpenThreads::AtomicPtr和OpenThreads::Atomic

OpenThreads::Atomic提供了对整数的原子操作(增加、减少、AND、OR等)OpenThreads::AtomicPtr提供了对指针的原子操作(赋值、获取)如果不采用这两者,则需要自己定义锁对整数和指针进行原子操作。#if defined(_OSG_REFERENCED_USE_ATOMIC_OPERATIONS) mutable OpenThreads...

2019-06-21 06:47:25 564

原创 C++学习(二十二)观察者模式

实现观察者模式有很多形式,比较直观的一种是使用一种“注册——通知——撤销注册”的形式。下面的三个图详细的描述了这样一种过程: 观察者(Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(Container)里。 被观察被观察对象发生了某种变化(如图中的SomeChange),从容器中得到所有注册过的观察者,将变化通知观...

2019-06-21 06:29:09 113

原创 osg学习(三)osg::Observer的作用

本意可能是要存放所有观察者,但是在observer_ptr中没有看到什么时候起作用。

2019-06-20 23:09:42 398 1

原创 C++学习(二十一)重载=和构造函数的执行顺序

class TTT{public: TTT(){ _i=0; } TTT(int i){ _i=i; } void operator = (int i) { _i=i; } int _i;};intmain(int argc, char** argv){ TTT t...

2019-06-20 22:28:02 330

原创 C++学习(二十)debug和release的区别

1、release会对代码做优化,如在文章C++学习(十五)C++中的volatile 中分析的情况。2、指针默认的初始值可能不同,比如有的编译器debug版本下指针默认初始值为0xCCCCCCCC,在Release版本下初始值为0x0000000A。...

2019-06-19 21:51:29 560

原创 C++学习(十九)void和void*

1、void的作用  c语言中,void为“不确定类型”,不可以用void来声明变量。如:void a = 10;如果出现这样语句编译器会报错:variable or field ‘a’ declared void。  在C语言中void 常常用于:对函数返回类型的限定和对函数参数限定    (1)对函数返回类型的限定:当函数不需要返回类型是必须用void 来限定返回类型,限定了函数的...

2019-06-19 21:35:46 2230

原创 C++学习(十八)C++中的volatile

volatile的本意是“易变的”,volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取...

2019-06-19 06:58:55 1412

原创 C++学习(十七)模板结构体

类似于模板类,还有模板结构体template<typename T> struct SharedSARepo { private: typedef std::list< osg::observer_ptr<T> > SAUniqueSet; SAUniqueSet _set; ...

2019-06-18 06:55:31 1815

原创 openGL之API学习(九十四)几何着色器的几个参数设置含义

//设定输入几何图元的类型,比如GL_TRIANGLESglProgramParameteriEXT( program, GL_GEOMETRY_INPUT_TYPE_EXT, inputGeometryType);//设定输出几何图元的类型,比如GL_TRIANGLE_STRIPglProgramParameteriEXT( program, GL_GEOMETRY_OUTPUT_...

2019-06-17 22:48:51 349

原创 openGL之API学习(九十三)OpenGL中EXT,ARB扩展

由于OpenGL的标准更新不是很频繁,因此,当某种技术应用流行起来时,显卡厂商为了支持该技术,会使用自己的扩展来实现该功能。但是不同厂商如果有不同的实现,那么程序编写将会异常繁琐。因此多个厂商共同协商使用一致的扩展,这就是EXT扩展。 如果这个扩展不仅多厂商协商,而且得到OpenGL体系结构审核委员会(即ARB)的确认,那么该扩展便成为ARB扩展。最后如果标准制定者认为该功能有必要添加到新版本的标...

2019-06-17 21:58:44 752

原创 C++学习(十六)有关dump的理解

1、作为动词,转存的意思,将内容从一个位置转存到另一个位置。2、作为名词,转存文件的意思,某些程序生成的文件,比如操作系统生成的调试日志文件。...

2019-06-16 17:49:41 429

原创 C++学习(十五)如何保证源代码不外泄

对于研发型企业来说,源代码就是公司的价值所在,一旦泄露后果难以想象,怎么对源代码进行防泄漏保护?有几种方式:1、物理性“源代码加密”就是指截断外网,封掉U口或者锁机箱,让开发者处于一种封闭的状态。这种方法是可以达到效果的,弊端就是如若封掉U口,对于员工的工作使用会造成很大的影响,大大降低了工作的效率,并且员工开发查资料很不方便,如若给每人配一台电脑,公司的成本将大大提高。这样的操作方式员工...

2019-06-16 17:22:51 1518

原创 openGL之API学习(九十二)GLM

OpenGL Mathematics (GLM) 是一个基于GLSL的C++数学函数库。小例子:#include <glm/glm.hpp>int foo(){ glm::vec4 Position = glm::vec4( glm::vec3( 0.0 ), 1.0 ); glm::mat4 Model = glm::mat4( 1.0 ); ...

2019-06-16 07:02:53 1026

原创 openGL之API学习(九十一)gl_ModelViewProjectionMatrix过期deprecated

global variable gl_ModelViewProjectionMatrix is deprecated after version 120gl_ModelViewProjectionMatrix是一个内置GLSL常量,可以获取当前的视图投影变换矩阵。可是,自从opengl3.3后该常量标注为过期deprecated。取而代之的是采用uniform的形式向着色器传递矩阵,这样使...

2019-06-16 06:58:52 2544 2

原创 openGL之API学习(九十)GL_ARB_gpu_shader5

针对OpenGL 3.2 和 GLSL 1.50 提供的扩展。具体可看:https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_gpu_shader5.txt

2019-06-15 20:39:25 910

原创 openGL之API学习(八十九)WebGL与opengl es

WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。显然,WebGL技术标准免去了开发网页专用渲染插件...

2019-06-15 18:24:49 891

原创 openGL之API学习(八十八)有关Khronos Group

Khronos Group是一个行业组织,创建开放标准以实现并行计算、图形、视觉、传感处理和动态媒体在各种平台和设备上的编写和加速。Khronos标准包括 Vulkan™, OpenGL®, OpenGL® ES, WebGL™, OpenCL™, SPIR™, SYCL™, WebCL™, OpenVX™, EGL™, OpenMAX™, OpenVG™, OpenSL ES™, StreamI...

2019-06-15 18:17:37 1162

原创 openGL之API学习(八十七)有关OpenGL SC

OpenGL SC 1.0 定义了OpenGL ES™ 1.0固定功能图形管线的高安全度子集。OpenGL SC 1.0 在2005年运行,之后在2009年更新到OpenGL SC 1.0.1。OpenGL SC 2.0 是OpenGL ES 2.0的子集,把控基于GLSL的可编程渲染器,以实现更强的图形功能,包括提高性能和降低能耗。OpenGL SC 2.0 去除了OpenGL ES 2.0的全...

2019-06-15 18:15:13 967

原创 openGL之API学习(八十六)OpenGL、OpenGL ES、OpenGL SC、GLSL、 GLSL ES、GLX

在不同平台和设备运行的图形规范OpenGL桌面级GLSL是OpenGL着色语言,运行于桌面级的GPUOpenGL ES嵌入式、手持设备GLSL ES运行于嵌入式、手持设备的GPUOpenGL SC高可靠度显示系统GLX(OpenGL extension for X)它作为x的扩展,是x协议和X server的一部分,已经包含在X server的代码中了。GLX提供了x wi...

2019-06-15 18:11:04 833

原创 openGL之API学习(八十五)有关opengl扩展extension

opengl扩展是opengl核心所不具备的新的或扩展的功能。一般opengl扩展会有多个硬件厂商支持,只有部分会有特殊的硬件开发厂商支持。哪些扩展有哪些厂商支持,可以查看下面的网站:https://www.khronos.org/opengl/wiki/OpenGL_Extensionhttps://www.khronos.org/registry/OpenGL/index_gl.p...

2019-06-15 17:40:36 932

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

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