- 博客(37)
- 资源 (1)
- 收藏
- 关注
原创 模板元编程
模板元可以把运行时消耗的时间,在编译期间优化主要思想利用模板特化机制实现编译期条件选择结构,利用递归模板实现编译期循环结构,模板元程序则由编译器在编译期解释执行。优劣及适用情况通过将计算从运行期转移至编译期,在结果程序启动之前做尽可能多的工作,最终获得速度更快的程序。也就是说模板元编程的优势在于:1.以编译耗时为代价换来卓越的运行期性能(一般用于为性能要求严格的
2015-12-30 21:42:14
638
原创 设计模式(三)--工厂模式
简单工厂模式什么是简单工厂模式 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。模式中包含的角色及其职责1.工厂(Creator)角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。2.抽象(Product)角色简
2015-11-23 15:33:53
482
原创 设计模式(二)--单例模式
单例模式是一种对象创建型模式,使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。 GoF对单例模式的定义是:保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。为什么使用单例模式在应用系统开发中,我们常常有以下需求:- 在多个线程之间,比如初始化一次socket资源;比如servlet环境,共
2015-11-23 15:26:41
531
原创 设计模式(一)
设计模式的分类Gang of Four的“Design Patterns: Elements of Resualbel Software”书将设计模式归纳为三大类型,共23种。 创建型模式 : 通常和对象的创建有关,涉及到对象实例化的方式。(共5种模式) 结构型模式:描述的是如何组合类和对象以获得更大的结构。(共7种模式)行为型模式:用来对类或对象怎样交互和怎样分
2015-11-23 15:20:28
447
原创 C++的类型转换
类型转换名称和语法C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 static_cast 静态类型转换。如int转换成char reinterpreter
2015-11-17 16:49:25
386
原创 重新学习COCOs2D-X版本2.2.3开始---第一篇引擎的游戏入口
你看很多视频,很多教程,很多人会告诉你,cocos2dx引擎的游戏入口都是从如下代码开始bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector* pDirector = CCDirector::sharedDirector(); CCEGLView* pE
2015-10-28 00:27:24
454
原创 Direct3D-窗口初始化
这里讲的是创建一个通用的Direct3D窗口。这里我先讲下用到的所有函数和结构Window WNDCLASSEX[cpp] view plaincopytypedef struct tagWNDCLASSEXA { UINT cbSize; UINT
2015-04-05 20:56:30
1134
原创 C++11 bind的初步了解
bind是一个C++11的一个标准库函数,它的定义在functional中。可以将bind看作一个通用的函数适配器,他接受一个可调用的对象,生成一个新的可调用对象来‘适应对象参数列表。调用bind的一般形式为: auto newCallable = bind(callale,arg_list);其中,newCallable本身是一个可调用的对象,arg_list是一个逗号分割的参数
2015-01-08 22:57:04
652
原创 C++11 lambda表达式基本用法
#include using namespace std;void func1(){ cout<<"lambda表达式,值捕获,类似值传递"<<endl; size_t v1=30;//size_t为unsigned int无符号整数 size_t v2=30; size_t v3=30; auto f=[v1,v2,v3]{return v1+v
2015-01-07 00:14:07
856
原创 线程等待WaitXXXXX()函数系列之WaitForSingleObject和WaitForMultipleObject
Wait*()函数族可以来实现事件的检测,改函数可以实现单信号和多信号的侦测。可能我这么说大家可能会有点迷迷糊糊。不急,我们先来介绍两个函数。第一个是用于单信号侦测。WaitForSingleObject()函数原型DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);hHandle对象句柄。可
2015-01-06 17:29:20
2579
原创 创建一个简单的线程
HANDLE CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, //SECURITY_ATTRIBUTES结构指定了这个线程的安全属性,如果填NULL则就以默认的安全描述子创建,并且返回的句柄不会被继承。 _In_SIZE_
2015-01-06 17:23:50
880
原创 一些编程中的优化方法
以下是一些基本的编程遵循的守则: 1、尽可能的使用32位数据。因为英特尔的处理器是以32为位基准的,其中对32位进行了优化。 2、对于频繁调用的一些小函数,应声明为内联函数。 3、尽可能的使用全局变量,但避免产生可读性差的代码。 4、避免使用浮点数进行加法和减法运算,因为整数单元通常比浮点数单元运算快。 5、尽可能使用整数。尽管浮点数处理器几乎和整数一样快,但
2015-01-06 00:30:28
1084
原创 Unity3D-GUI基本控件
GUI.Button void OnGUI() { GUI.Label(new Rect(10, 10, Screen.width, 30), str); /* GUI.Button 按钮 static function Button (position : Rect, text : String) : bool
2014-11-18 23:35:44
1363
原创 DirectD3D-网格(一)
在Direct3D渲染绘制过程中,网格是一个非常重要的概念。游戏中,我们需要将现实生活中各种物体,如一个足球,一个台灯在电脑上显示出其3D效果。通常我们的做法如下: (1)先把该物体放在一个虚拟的三维坐标系中,该坐标称为局部坐标系(Local Space),一般以物体的中心作为坐标原点,采用左手坐标系。 (2) 然后,对坐标系中的物体进行点采样(Point Sa
2014-11-13 21:08:18
721
原创 DirectD3D-纹理映射
纹理映射的概念 在三维里,如果我们绘制的图形都是单一颜色的图形,那么这个世界看起来会缺乏生机。比如我们之前用顶点绘制的正方体,他只有一种色。而我们平时看到的正方体都是看起来很有活力的,比如说一个箱子,他虽然也是一个正方体,但是他上面的图案,看起来却让人觉得很有生机。那么要怎么样才能绘制这样的正方体呢。这就是纹理映射要做的的事了。 怎么去理解纹理映射,其
2014-11-12 14:03:02
2188
转载 DirectD3D-光照和材质
本篇文章里,我们对Direct3D之中固定功能流水线中的3D光照编程相关的知识进行了详尽的剖析,文章末尾依旧是提供文章配套的详细注释的demo源代码的欣赏,并在文章末尾提供了源代码下载。 一、引言光,乃万物之源。我们根本无法想象,这个美丽怡人的世界,如果没有光的陪伴,会是怎样的一副满目疮痍。计算机3D世界作为现实世界的高度逼真的模仿,
2014-11-12 14:00:17
2327
原创 (第十一章)Unity3D-简单的脚本AI
Unity3D有提供人工智能AI空间,不过要专业版的才能使用,这里我们就来自己手动写自己的AI。博主xi
2014-11-02 13:28:42
886
转载 Direct3D-四大变换
从本篇文章开始我们就来开始来学习固定渲染流水线这套渲染体系。其实固定渲染流水线和之后我们要学习的可编程渲染流水线体系有很多异曲同工之妙,所以先学习固定功能渲染流水线体系,再学可编程渲染流水线体系,就可以循序渐进,步步为营地掌握好DirectX。 空间中的物体需要使用三维坐标来描述,而我们的显示器是显然是二维的,所以在屏幕上渲染一个三维场景时,首先需要将物体描述空间物体的三维
2014-11-01 14:34:02
2318
原创 Direct3D-顶点缓存
在计算机所描绘的3D世界中,所有的物体模型(如树木,人物,山峦)都是通过多边形网格来逼近表示的,这些多边形可以是三角形,也可以是四边形。所以我们这样说,多边形网格是构成物体模型的基本单元。三角形作为最简单的多边形,在3D世界中的地位显然不可小觑。在Direct3D中,我们经常使用三角形来描述物体模型。需要指出的是,任何物体都可以用三角形网格来逼近表示,三角形网格是构建物
2014-11-01 14:04:35
1498
转载 C++ PeekMessage与GetMessage的对比
相同点:PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中的消息派发出去。不同点:无论应用程序消息队列是否有消息,PeekMessage函数都立即返回,程序得以继续执行后面的语句(无消息则执行其它指令,有消息时一般要将消息派发出去,再执行其它指令)。GetMessage函数只有在消息对立中有消息时返回,队列中
2014-10-24 21:45:13
1316
转载 (第二章)C++基本绘图
首先介绍一下GDI(Graphics Device Interface)。GDI,中文翻译为“图形设备接口”,是Windows API中相当重要的一个成员,它掌管了所有显像设备的图像显示及输出功能。Windows系统现在的图形操作环境都是他的功劳。Ⅰ.坐标与DC在实际利用GDI绘图之前,我们先来了解一下几个屏幕绘图的基本概论。▲创建一个窗口之后,显示
2014-10-24 21:41:18
9190
1
转载 C++chan常用API
这篇文章能让初学者快速了解visual C++ MFC中常见的核心的类与函数,虽然全部看下来有点枯燥,但对初学者快速了解MFC的框架结构很有好处。常用类CArchive类:用于二进制保存档案 CBitmap类:封装Windows的图形设备接口(GDI)位图 CBrush类:封装图形设备接口(GDI)中的画刷 CButton类:提供Wi
2014-10-24 20:47:19
986
原创 (第九章)Unity3D-音频和天空盒子
学了那么久有没有发现,周围太安静,一个游戏怎么可以没有声音呢是不是。在U3D里面添加声音很简单。先讲两个概念,AudioListener,AudioSource声音监听和声音源,顾名思义,监听就是监听该声音(监听声音源的声音。) 首先我们直接导入自己的声音,U3D在导入的时候会自己将声音格式转换成自己所支持的格式,这个过程需要一些时间。 接下来我们给摄像机添加声音监听,由于
2014-10-21 00:26:54
810
原创 (第八章)Unity3D-物理世界之打箱子
之前已经将了一些物理知识,现在我们来结合之前所学的知识,再加上一些其他知识,来做个打箱子的小游戏。 先说下用到的知识。 首先我们动态的创建物体,并且为物体添加一些属性,代码入下 //产生一个Cube GameObject gobjCube=GameObject.CreatePrimitive(PrimitiveType.Cube); //设定位
2014-10-20 22:56:46
886
原创 (第七章)Unity3D-物理世界
很多游戏里都有各种不同的物理行为,而且写这些物理行为的代码却是很需要你的物理基础加数学基础,然而Unity3D引擎已经为你写好了一些基本的物理效果,然开发者方便了很多,但是这些远远还是不够一个游戏的使用,所以具体情况具体分析。现在我们就来了解一下U3D里面的物理引擎。 首先我们创建一个小球,然后再为小球设置为刚体
2014-10-20 22:52:09
1402
原创 (第六章)Unity3D-地形编辑
Unity3D提供了很强大的地图编辑功能,如果你不需要画面那么美的话,Unity3D提供了很多素材。我们可以在上面自由的建山,还有花草树木等。好了废话不多说了开始进入正题吧. 首先新建一个Unity3D工程,然后开始新建一个地形如图
2014-10-20 00:50:10
3816
原创 (第5章)Unity3D-ObjectGame
GameObject 游戏物体是Unity场景里面所有实体的基类. Variables变量isStaticEditor only API that specifies if a game object is static.只有在API指定一个游戏物体是静态的时候编辑。transformThe Transform attached to this
2014-10-18 16:40:25
696
原创 (第四章)Unity3D-地球旋转Dome
博主没事写了一个很简单的Doem就几句代码。就是地球围绕太阳转. 首先创建两个球体,分别设置相应的大小,取名为Sun,Earth。然后创建一个C#脚本编写代码.using UnityEngine;using System.Collections; public class EarthCtrl : MonoBehaviour { //声明游戏对象private Gam
2014-10-18 16:35:46
4572
原创 (第三章)Unity3D-Vector3
今天来介绍一下Vector3这个类 Vector3 三维向量 表示3D的向量和点。这个结构用于在Unity传递3D位置和方向。它也包含做些普通向量运算的函数。除了下面列出的函数,其他类用于处理向量和点。例如Quaternion和Matrix4x4类用于旋转或变换向量和点。
2014-10-18 14:09:50
4265
原创 (第二章)Unity3D用键盘控制物体旋转
今天博主学习了怎么控制一个物体旋转,运用到很简单的几句代码.在update()中写入这样的代码.void Update () {if(Input.GetKey(KeyCode.UpArrow)){//向上转//transform代表当前对象transform.Rotate(Vector3.right*Time.deltaTime*30);}i
2014-10-18 13:55:29
8138
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人