自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BonChoix的专栏

“真正弄懂一件事情的标准,是用自己的话让别人听懂。”

  • 博客(8)
  • 资源 (21)
  • 收藏
  • 关注

原创 用const、enum、inline替代#define

在C语言程序设计中,define被大量地使用,用来定义常量或者宏,以减少代码重复及提高可维护性。但在C++中,引进了const、enum、inline后,大多数使用define的地方都可以用它们来代替(当然#ifndef、#define、#endif这种条件编译除外)。以下是几点提倡用const、enum、inline而不用define的理由:       1. 定义常量

2012-10-28 07:49:37 4041

原创 Lua函数的多个返回值

Lua中的函数的一个很特殊也很有用的性质,即可以有多个返回值。包括一些内置的函数就是这样。比如string.find函数,在给定的字符串中查找一个pattern,如果有匹配的部分,则返回对应的头、尾的两个索引值;如果不存在匹配,则返回nil。当然,用户定义的函数也可以有多个返回值,通过return关键字返回多个结果即可。比如一个返回数组中最大值及其索引的函数:function max(a) lo

2012-10-13 05:45:18 36964 2

原创 C++迭代器之'插入迭代器'

插入迭代器(Insert Iterator),又叫插入器(Inserter),是继上次的反向迭代器之后C++中的又一个迭代器适配器。插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作。插入迭代器对标准算法库而言尤其重要。算法库对所有在容器上的操作有个承诺:决不修改容器的大小(不插入、不删除)。有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一承诺,即保持了设

2012-10-11 23:00:10 8325

原创 C++迭代器之'反向迭代器'

反向迭代器(Reverse Iterator)是普通迭代器的适配器,通过重新定义自增和自减操作,以达到按反序遍历元素的目的。如果在标准算法库中用反向迭代器来代替普通的迭代器,那么运行结果与正常情况下相反。除此之外,其用法与普通迭代器完全一样,我们不作详细讨论。       这里主要讨论的是反向迭代器的一个很特殊、也很容易出错的性质,即它的“逻辑位置”与“物理位置”。先通过看一个例子开始:v

2012-10-11 20:00:00 6512

原创 C++中的函数对象(Function Object)(二)

除了自定义的函数对象,标准库还为我们提供了一系列现成的函数对象, 比如常见的数学、逻辑运算等。例如:negate(),plus(),minus(),multiplies(),divides(),modulus(),equal_to,greater(),less(),logical_not(),logical_and(),等等。       关于函数对象的最后一个很重要的概念是“函数适配器”。函

2012-10-10 04:27:59 7949

原创 C++中的函数对象(Function Object)(一)

一个函数对象,即一个重载了括号操作符“()”的对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。举个最简单的例子:class FuncObjType{public: void operator() () { cout<<"Hello C++!"<<endl; }};类FuncObjType中重载了“()”操作符,因此对于一个该类的对象FuncO

2012-10-09 08:24:32 39597 1

原创 C++中的异常安全性

一个函数如果说是“异常安全”的,必须同时满足以下两个条件:1.不泄漏任何资源;2.不允许破坏数据。 我们先通过两个反面的例子开始。       第一个是造成资源泄漏的例子。一个类Type,内含一个互斥锁成员 Mutex mutex,以及一个成员函数void Func()。假设Func函数的实现如下所示:void Type::Func(){ Lock(&mutex); DoSometh

2012-10-08 08:09:23 7673 3

原创 C++中的资源管理

C++中最重要, 也最令人头疼的事情之一就是资源管理。原则上,每次在堆区用关键字new申请一块内存,必须对应一个delete来释放它。对应一般的小程序,通过细心地写代码,很容易做到。但当程序变大、变复杂的时候,仅仅依靠谨慎的编写程序也是很难做到的。考虑以下几种情况:1. 用new申请资源与用delete释放资源之间的跨度比较大,很容易在做完中间一系列的任务后忘记最初曾申请过资源,导致未释放它。

2012-10-07 09:02:16 4197 2

D3D11法线映射示例

用d3d11实现的一个法线映射示例程序。 操作: 'w','a','s','d'进行移动,鼠标左键旋转镜头; '1':只开启光照; '2': 光照+法线映射; '3': 光照+parallax mapping; '4': 光照 + 纹理; '5': 光照 + 纹理 + 法线映射; '6': 光照 + 纹理 + parallax mapping。

2013-03-11

动态CubeMapping

D3D11使用Cube Mapping技术实现动态的环境贴图、物表反射、天空盒。

2013-02-18

d3d11 CubeMapping反射+天空盒

用d3d11、cube mapping实现反射与天空盒效果。 操作方法:鼠标左键旋转镜头,WASD进行移动。

2013-02-15

D3D11 Cube Mapping示例程序

d3d11中通过cube mapping实现天空盒效果。包含全部源代码及可执行程序。 操作方法:通过鼠标左键旋转镜头。

2013-02-13

D3D11 第一人称摄像机类的实现

该示例演示了一个第一人称摄像机的实现。 鼠标左键旋转镜头,WASD前后、左右行走,'1','2','3'切换渲染配置。Alt+Enter全屏、窗口切换。

2013-01-20

D3D11平面阴影实现

该示例程序用于演示用D3D11的模板缓冲区实现镜子反射及平面阴影的渲染效果。文件中附带exe文件及所有源代码,如果exe文件不能正常执行,请自行手动编译。 操作方法:鼠标左键按下旋转镜头,右键按下调整镜头远近。

2013-01-16

D3D11(StencilBuffer)镜子的实现

该示例程序用于学习D3D11中模板缓冲区的使用,通过使用它来实现一个平面镜面反射的效果。 操作说明:鼠标左键按下旋转镜头,右键按下调整镜头远近。 文件中包含整个示例程序及框架,以及可执行程序。如果exe不能正常运行,请自行手动编译。 程序难免有错误,欢迎指正、交流~

2013-01-13

D3D11雾效示例程序

该示例用来演示用D3D11实现雾效。该文件包含所示源代码(包括一个d3d11程序框架),及可执行程序。如果exe程序无法执行,请自行手动编译。 相关操作: 要通过'1','2','3','4'数字键来打开、关闭雾效等一些功能。 鼠标左键按下旋转镜头,右键按下调整镜头远近。 程序难免有些错误,欢迎指正~

2013-01-10

D3D11 Blending示例程序

一个演示使用D3D11实现透明效果的示例程序,包括主程序和一个程序框架,附带可执行程序。如有问题,欢迎交流~

2012-12-31

D3D11纹理基础

该示例用于演示D3D11中纹理的基础使用,包括完整的框架源代码及可执行程序。如果可执行程序运行有问题,请自行手动编译程序,有关操作请参考附带的使用说明。程序有任何问题或不解之处,欢迎提出~

2012-12-26

D3D11光照计算示例程序

该资源包含一个D3D11程序框架,示例程序实现了一个光照计算模型。

2012-12-25

D3D11基本几何体绘制

该程序示例包含了一些基本几何体的绘制方法,包括网格、立方体、圆柱体、球。 网格在水面渲染、地形渲染中应用十分广泛,因此学习其相关的绘制方法很有用。圆柱和球有着相似的绘制方法,通过指定的精细等级(slice和stack)来绘制。示例代码包含了所有的绘制算法,以及通过一个程序来展示绘制效果。

2012-12-23

D3D11程序框架

一个用于学习D3D11的程序框架,最开始的部分。随着学习深入逐渐完善、添加高级功能。

2012-12-22

D3D11绘图基础:旋转的彩色立方体

D3D11绘图基础,实现一个简单的场景:旋转的彩色立方体的源代码。

2012-12-16

游戏定时器的实现

一个游戏编程当中用到的简易定时器的实现。

2012-12-13

D3D11初始化代码

D3D11初始化,一个最简单的D3D11应用程序。学习D3D的开始。

2012-12-13

最简单Win32程序

一个最简单的Win32程序,作为学习d3d11的开始。

2012-12-12

【D3D11游戏编程】XNAMath XMVECTOR

【D3D11游戏编程】中XNAMath介绍,XMVECTOR部分示例代码。

2012-12-11

【D3D11游戏编程】XNAMath XMMATRIX

D3D11游戏编程,XNAMath介绍,XMMATRIX部分示例代码

2012-12-11

游戏引擎架构

游戏引擎技术领域的权威之作,爱好游戏编程的不可错过!非影印版,有标签,绝对高质量~

2012-10-09

空空如也

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

TA关注的人

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