自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OpenGL ES 之 EGL

本文是关于一些基本的EGL API的基本用法的,具体使用的是ARM的Mali OpenGLES模拟器的Windows x64版本(http://malideveloper.arm.com/cn/develop-for-mali/tools/opengl-es-3-0-emulator/)。文中代码使用mingw64_gcc-4.8.2_x86_64编译器开启C++11支持进行编译。 眼下针对移动

2013-11-23 00:10:34 3333

原创 C++ 通过Thunk在WNDPROC中访问this指针实现细节

本文代码使用了一些C++11特性,需要编译器支持。本文仅讨论x86_64平台的相关实现,x86平台理论上只需修改 thunk 相关机器码即可。 THUNK的原理参见之前的一篇博文《C++ 通过Thunk在WNDPROC中访问this指针》 首先定义我们的window类,该类实现对一个Win32窗口句柄的封装。 该类将在构造函数中创建窗口,在析构时销毁窗口; 窗口的消息过程函数(Window

2013-11-21 14:06:44 1444

原创 Unicode 字符集及UTF-8 UTF-16编码

很久以前发在他处的一篇博文,今天翻出来重新整理了一下   Unicode 字符集 共分为 17 个平面(plane), 分别对应 U+xx0000 - U+xxFFFF 的 code points, 其中 xx := 00 - 10。其中第 0 平面不包含为 UTF-16 编码保留的 U+D800 - U+DFFF。第0平面包含了最常用的字符,被成为 Basic Multilingual Pl

2013-11-21 14:06:42 1065

原创 C++11 可变参数模板

在C++11之前, 有两个典型的受制于模板功能不强而导致代码重复难看的问题, 那就 function object 和 tuple。 拿 function objects 来说, 需要一个返回类型参数及N个参数类型参数。 但因为变长参数模板不受支持,导致不得不重复书写7、8个模板类,但最终也只能支持7、8个参数的 function object。C++11中最终为我们带来了强大的变长 参数模板功能

2013-11-21 14:06:40 998

原创 C++ 匿名名字空间及静态非成员函数

在C++中,static有一个感觉被较少提及的用法:修饰非成员函数,这个用法实际是从C语言继承来的。其作用是表明这个函数只在当前编译单元中有效。这就使这个函数的所有引用在编译时就可以全部确定,无需进入链接阶段,链接器没有机会看到这个函数相关的一切符号,无论导入还是导出(理论上,实际编译器如何处理这个事情可能不尽相同,未作深入研究)。即使多个编译单元都包含相同的signature相同名字的函数,链接

2013-11-21 14:06:38 1109

原创 C++ 通过Thunk在WNDPROC中访问this指针

本文基本只讨论原理,具体实现请参见后续文章《C++ 通过Thunk在WNDPROC中访问this指针实现细节》 当注册窗口类时,WNDCLASSEX结构的lpfnWndProc成员应设置为窗口过程函数的地址,这是一个C风格的函数指针,所以我们只能使用全局或静态函数的地址,这在我们将窗口封装为C++类时会很麻烦,因为我们无法在一个全局或静态的WindowProc函数中直接访问类实例,这就需要一些手

2013-11-21 14:06:36 1271

原创 C++ Template Specialization (模板特化)

个人理解这个东西说白了就是当模板类(或函数)的类型参数为某特定值时用对应的特化定义代之。 看个例子吧 #include using namespace std; template struct is_void { static const bool value = false; }; /* 上面的代码定义了一个简单的模板结构is_void的主版本,无论类型参

2013-11-21 14:06:33 1391

原创 Event — Windows API

Event即事件是一种用于进行线程/进程间同步的对象,事件有置位和复位两种状态,当线程通过waiting functions等待Event对象置位时该线程将进入阻塞状态,当该Event对象被置位或等待超时后,等待的线程将恢复执行。Event可以用在一个线程要等待其它线程时。可以使用CreateEvent创建Event对象 HANDLE WINAPI CreateEvent( LPS

2013-11-21 14:06:31 953

原创 Semaphore — Windows API

Semaphore是旗语的意思,在Windows中,Semaphore对象用来控制对资源的并发访问数。Semaphore对象具有一个计数值,当值大于0时,Semaphore被置信号,当计数值等于0时,Semaphore被清除信号。每次针对Semaphore的wait functions返回时,计数值被减1,调用ReleaseSemaphore可以将计数值增加 lReleaseCount 参数值指定

2013-11-21 14:06:29 946

原创 Mutex — Windows API

Mutex是互斥体的意思,当一个线程持有一个Mutex时,其它线程申请持有同一个Mutex会被阻塞,因此可以通过Mutex来保证对某一资源的互斥访问(即同一时间最多只有一个线程访问)。调用CreateMutex可以创建或打开一个Mutex对象,其原型如下 HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes,

2013-11-21 14:06:27 1008

空空如也

空空如也

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

TA关注的人

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