自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 Texture Buffer Object

Texture Buffer Object(TBO),是这一种特殊的一维纹理。需要和缓存对象关联使用,在着色器中可以访问缓冲对象管理的内存数据。初始化//***********************************************************//FUNCTION::void CTBOApp::__createTexturetBufferObject(){

2016-08-02 10:56:45 2076

原创 Atomic Counter

Atomic Counter是一个缓存对象,存储着一个或者多个unsigned int的变量值。在GLSL着色器有着特定的原子操作(单一的,不可再分的操作)。atomicCounterIncrement 原子计数+1atomicCounterDecrement 原子计数-1Atomic Counter可以用来控制片元的执行,避免对同一块内存区域同时操作。原子计数器表明当前片元在执行任务时,不能

2016-07-31 15:53:20 1546

原创 Shader Storage Buffer Object

Shader Storage Buffer Object是GLSL着色器的buffer,不同于uniform buffer在着色器不可修改,shader storage buffer是可读可写的。修改的内容给其他着色器调用或者应用程序本身。初始化 m_UniformBlockData.uLightDirectionE = glm::vec4(1, 1, 1, 0); m_Uniform

2016-07-31 12:39:30 5365

原创 Uniform Buffer Object

uniform 变量是着色器和应用程序之间共享数据的桥梁。uniform buffer是GPU上的内存空间,从应用程序传递数据到GLSL程序。uniform buffer object 主要优势是可以在不同的GLSL着色器中分享数据,注意uniform buffer在GLSL中是只能读不能修改。Uniform Block在shader程序中,定义了一系列的uniform变量,可以把这些变量组合在一起

2016-07-31 11:32:40 2509

原创 Jekyll 多说评论

Jekyll默认是支持Disqus评论功能,我也比较喜欢Disqus。但是因为国内使用Disqus必须翻墙,其次国内大部分程序员都使用多说,其互动性交流讨论更强。 多说多说评论插件系统可以集成与Wordpress,Hexo,,Jekyll各种网站和博客中。因为集成了微博,QQ,微信,人人网,豆瓣等社交平台,所以用户更多样化,互动评论量也增多。添加步骤多说到Jekyll步骤如下:注册多说网站站点,

2016-07-13 00:19:38 1279

原创 Jekyll 自动生成文章

当使用Jekyll写文章的时候,你肯定不想麻烦的创建文本,修改文本后缀名,再加文本头加上yml语法开头。所以这时候你肯定想到的是写个脚本简化操作,程序员不就是为偷懒而写代码吗?可以使用Rake来解决这个问题。RakeRake,即Ruby Make, 使用ruby开发代码构建工具。安装rake gem install rake,可以先查看gem list rake 是否已经安装rake?编写Ra

2016-07-11 11:32:15 2886

原创 Jekyll 组装

初步认识Jekyll之后,需要搭建自己的博客系统。可以fork别人的 jekyll 主题。Jekyll 主题 ,列举了一些美观的主题,任选你满意的一个即可。安装主题git clone 主题仓库的gitcd 目录jekyll serve如此简单高效地搭建了一个博客。下面介绍一些必要插件。语法高亮jekyll 使用 pygments 来支持语法高亮,所以你需要安装 gem install pyg

2016-07-09 02:13:07 463

原创 初识Jekyll

JekyllJekyll是一个使用Ruby编写的静态站点生成工具,使用Liquid模板渲染引擎,支持Markdown和Textile标记语言,并且可以为所有以 .html、.markdown、.textile扩展名结尾的文件使用YAML配置,内置语法高亮功能。而GitHub的Pages服务可以为每个GitHub主机上的仓库提供静态页面服务,并且Pages服务支持Jekyll。Jekyll和GitHu

2016-07-07 01:25:19 387

原创 Jekyll搭建本地环境

Jekyll使用git作为博客存储的搭建工具,Jekyll是一个静态的网站,优势是不担心流量和排版问题。不好的是不存在评论等插件系统,不过后期也可以解决。本文无干货分享,仅记录搭建过程。安装git::git tools安装Ruby: ruby安装RubyGems 安装DevKit:DevKit 在命令窗口下切换到安装目录,并执行以下命令安装Jekyll和验证 创建jekyll工程目录和开启

2016-07-06 01:57:45 890

原创 Boost asio

asio(asynchronous input and output) 表示异步输入输出,是基于操作系统提供的异步机制,异步数据处理表示触发后不需要等待完成,期间可以执行其他任务,而且不要求使用多线程和锁定,有效避免了条件竞争,死锁等。asio主要用于网络通信方面,支持TCP,UDP,ICMP等网络通信协议。asioasio主要分为同步和异步两种方式,同步表示同步等待,比如网络连接时,客户端发出请求

2016-07-04 10:09:11 1673

原创 Boost serialization

序列化(serializtion)是指把对象信息转换成可以存储或者通过网络连接传输格式的过程,然后在本地或者在另一个计算机环境中可以重构出原有的对象信息是指反序列化。前言本文只介绍通过boost serialization存储的优势,先通过例子简单明白。假如现在你是一个学校学生系统管理员,你需要保存学生信息,比如学生学好,名字,年龄。当然最简单的方式是通过C++的文本操作解决方案。//*******

2016-07-03 11:29:48 3143

原创 Boost xpressive 正则表达式

正则表达式能方便处理文本问题,比如验证,匹配,查找,替换等。而boost xpressive提供动态和静态方式,静态方式类似于boost.spirit语法分析器,使用操作符重载生成编译器的表达式对象,可以在编译器进行正则表达式的语法检查。动态方式以字符串作为表达式对象,在运行时进行语法检查和处理。通常我们不必关心那种方式,因为在boost中它们已经融合,所以两者可以混用。正则表达式语法点号. 单字

2016-06-04 15:04:56 1710

原创 Boost string_algo

Boost提供了字符串处理算法,如大小写无关比较,修剪,特定模式的子串查找等。而且它处理的对象不一定是string,可以是符合boost.range要求的容器。string_algo 还有一些命名规则:前缀 i: 表明大小写不敏感后缀_copy : 算法不变动输入,返回处理结果的复制,否则算法原地处理,输入即输出后缀_if : 需要一个作为判断式的谓词函数对象,否则使用默认判断准则大小写转换

2016-05-29 12:51:08 588

原创 STL stack

stack栈是一种先进后出的数据结构,记得大学时期的计算器就是使用栈的数据结构实现,当然这种数据结构使用场景居多。Constructor stackstd::stack<int> first;std::stack<int> second(first);std::stack<int, std;:vector<int>> third; //使用vector初始化stack压栈,出栈stack压栈函数

2016-03-28 22:43:12 296

原创 STL map

stl中的map和set一样,都是关联性容器,内部实现是红黑树,所以检索速率高效。不同的是,map的数据形式是键值对,即Key-value。而且需要注意的是在map中,key值唯一,并默认会根据key的字典序进行升序排序。数据插入map添加数据可以有四种方式,分别是通过pair组合成键值对的形式,和数组的方式添加。#include <iostream>#include <string>#incl

2016-03-28 22:17:27 344

原创 STL list

STL中的list是序列容器,内部实现方式是双向链表,而链表的优势在于插入和删除元素效率高,但是随机访问元素相比vector数组的形式就低,所以读者在具体实现项目的时候,可以考虑因素选取。函数说明 list explain push_back 增加一元素到链表尾 push_front 增加一元素到链表头 sort 对链表排序,默认升序 merge 合并两个有序链

2016-03-11 23:20:34 421

原创 STL set

stl中的set是关联性容器结构,内部实现是采用红黑树的平衡二叉树,在set容器中每个元素的值唯一,即如果插入两个相同的数,后面的会被忽略,不会插入set容器。并且,set的元素会自动排序,默认排序方式从大到小的方式,当然可以自定义排序方式。注意,set容器中元素的值不能直接被修改。插入元素不同于的vector的push_back()方式,set中加入元素的函数是insert()。#include

2016-03-09 23:29:02 676

原创 STL vector

STL 最常见使用最多的是vector,它能容纳任何数据类型,因为它是模板实现,所以自定义的结构体,也是可行。内部实现是以数组形式,所以开辟的内存空间是连续的,并且vector中operator了[]符号,可以像数组一样访问数据。但是需要注意的是,这不是安全的,加入超过了vector的实际长度空间,那么取的值就是异常值,解决方法是使用at函数取值,越界会报异常out_of_range。 vecto

2016-03-08 23:11:29 336

原创 C++ mutable

mutable 英语翻译是易变的,性情不定的。常看到用来修饰成员函数变量,表示这个函数可以被修改,即使这个变量在const函数中,mutable修饰的变量也能被修改,从而忽略const的限制。#include <iostream>class CMutable{public: CMutable(void):m_Count(0){} ~CMutable(void){} int

2016-03-06 21:14:33 375

原创 C++ volatile

volatile英文的翻译是不稳定的,在C++中关键字声明表明其后变量值可能被改变,但是声明后,每次取值都是都是到内存中取值,从未防止编译器优化。A volatile specifier is a hint to a compiler that an object may change its value in ways not specified by the language so that a

2016-03-05 21:52:26 383

原创 C++ inline

在阅读别人的开源源码时,经常发现一些函数前加了关键字inline,上网查了下,这是内联函数的声明方式。 其主要的特点省去函数调用的开销,提高代码执行效率。 为什么能省去函数调用的开销?内联函数是以复制代码为代价来提高效率的,也就是在程序编译阶段,注意是在程序编译阶段,把内联函数体复制到调用点的函数体中,所以就省去了函数调用的开销。既然有复制函数体,所以有几点需要注意。inline int max

2016-03-05 20:35:01 419

原创 python 修改vs工程属性

有时候,在学习新技术的时候,或者在基于测试用例的开发新应用的时候,需要写很多工程,这些工程的属性配置基本都是一样,如,include头文件路径,lib路径,lib的input名字。新建一个工程,需要重写非常麻烦,vs能配置一个通用的,但是其他工程中又不需要这些的环境,所以突发想法写个脚本批处理vs这些属性。这里使用python修改当前目录下所有.vcvproj工程属性。使用.notepad打开vcx

2016-02-23 12:03:40 980

原创 C++ 回调机制

回调函数回调机制,函数A的形参包含一个函数指针,函数B传入函数A中。在函数A的函数体中,满足了一定的条件后调用函数B的过程,就是回调机制。而函数B就是回调函数。 回调函数的使用场景?某函数在某个时间或者某个事件下执行,但是确定的时间我不知道,只知道会调用这个函数,那么可以使用回调函数。它被触发可能是时间或者时间或者是中断等,会有一个消息通知,来告知回调函数执行相应的操作。函数指针void func

2016-02-20 20:32:05 567

原创 Boost property_tree 解析配置文件

在日常的开发系统中,不可避免的会解析配置文件,因为使用配置文件更直观,而且修改配置文件就不用再编译代码,当工程很大的时候,编译代码会是一件很痛苦的事。不同的需求的配置文件不同,Boost提供了一个property_tree来解析.xml,.ini,.json,.info四种格式配置文件。.xml文件.xml现在已经被广泛应用到数据交换格式,并且property_tree是树形结构,和.xm

2016-01-27 22:12:24 1691

原创 C++ 单例模式

单例模式Singleton(),应该是设计模式中最简单的一种模式,表明在整个程序执行周期内,类的实例对象只能存在一个。虽然很简单,但是应用场景却是很多,比如windows的任务管理器;windows的回收站,在整个系统运行中,回收站一直维护着一个实例;应用程序的日志应用,一般都何用单例模式实现,这一般是由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。

2016-01-22 17:12:52 420

空空如也

空空如也

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

TA关注的人

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