- 博客(79)
- 资源 (2)
- 收藏
- 关注
转载 【shell学习笔记】反引号和expr的用法
反引号` 和expr主要用于四则运算和字符串的操作。先说四则运算,在Shell中四则运算不能简简单单的加减乘除,应该要写如下的格式:$val1=`$val2 - 1`其中“=”后面用“`”包住表达式,这个符号在Shell中十分有用,是Tab键上面“~”的原来形式。可以用来将很多命令的结果保存到一个变量中去。接着就是运算符了,运算符的左右两边必须是空格,否则会出错。
2017-09-04 22:57:28 702
转载 二级指针和二维数组详解
一个函数形如:void f(float **p){/* 想要在函数体中按二维数组的方式访问*/ p[1][1] = 0;//c++用vc编译ok,运行出错(非法访问)}float **p; //其实这里的p并不是一个二位数组的指针,只不过是一个指向指针的指针像你这样访问肯定是会出问题的。例如:float a[2][2]={0,1
2016-02-29 17:10:45 691
原创 unity 对象池
对象池背后的理念其实是非常简单的。我们将对象存储在一个池子中,当需要时在再次使用,而不是每次都实例化一个新的对象。池的最重要的特性,也就是对象池设计模式的本质是允许我们获取一个“新的”对象而不管它真的是一个新的对象还是循环使用的对象。这是网上找的解释。我们游戏中大量用到了对象池。今天看了下对象池底层的代码。下面这篇文章写得挺好http://www.cnblogs.com/m
2016-01-29 15:39:23 563
原创 单状态机的实现
// 单状态状态机public class SingleStateMachine{ // Prev值保存上次操作值 // Curr值保存当前操作值 // 单状态机,不是true,就是false private bool m_bPrev; public bool Prev { get { return m_bPrev; } } private bo
2016-01-22 22:05:48 644
转载 ASCII、Unicode、GBK和UTF-8字符编码
点击打开链接很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方
2016-01-22 10:36:35 516
原创 单链表为什么用指向指针的指针
int a = 1, b =2;void change(int *x){ x = &b;}void _change(int **x){ *x = &b;}void main(){ int *p = &a; change(p); cout << *p << endl; _change(&p); cout << *p << endl; system("pause
2016-01-21 01:22:04 3595
转载 Linux 编译报错 undefined reference to `pthread_create'
Linux 编译报错 undefined reference to `pthread_create'这段时间一直在实习,也没时间写博客了。最近在看《现代操作系统》这本书,争取在12月份中旬之前看完此书。
2015-11-07 01:05:01 673
转载 图文详解Unity3D中Material的Tiling和Offset是怎么回事
原文链接图文详解Unity3D中Material的Tiling和Offset是怎么回事回到顶部(go to top)Tiling和Offset概述Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置。这样说当然是隔靴搔痒。下面用*.3ds文件作为模型,介绍Tiling和Offset到底是怎么回事。回到顶部(g
2015-10-20 11:03:28 743
转载 unity3d 有限状态机
以前自己做的小游戏动作也不多,用的都是if else switch,觉得没什么,最近实习发现公司的代码里面用的都是FSM状态机来控制切换。1.什么是有限状态机有限状态机是把一个对象的行为分解称为易于处理的“块”或状态。例如,灯的开关,就是一个简单的有限状态机。它有两种状态:开和关。假想一个机器小猫。它在肚子有一个插槽,放有很多模块(用来控制小猫的状态)。这些模块里包含这
2015-10-19 10:32:34 688
原创 leetcode_30 Next Permutation
Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest possible
2015-10-11 16:33:40 444
原创 leetcode_29——Divide Two Integers
Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.比如我们想计算100/3的值,那么先找到一个3*2^n的数,这个数是最接近100并小于100的数,得到n = 5;然后计算100 - 3*2^5 = 4,用
2015-10-11 15:20:14 497
原创 计算机图形学:基于3D图形开发技术——第三章 光栅化操作
光栅化操作阶段,由顶点程序处理的顶点将进入硬件处理阶段。首先顶点组装为图元,如三角形。同时,各个图元还将被进一步处理,进而确定屏幕上的2D形式,并光栅化为片元集合。光栅化过程包括如下子操作:剪裁操作、透视除法、背面剔除操作、视口转换以及扫描转换。光栅化操作不可编程。 3.1剪裁操作剪裁算法通常在硬件中实现,用户无权干涉。分为3种:三角形位于视锥体外部并被丢弃;三角形位于视锥
2015-10-10 15:56:48 2463
原创 计算机图形学:基于3D游戏开发——第二章 顶点处理机制
渲染管线:顶点处理过程——光栅化过程——片元处理过程——输出合并操作。光栅化阶段:根据顶点对多边形加以整合,并将各个多边形转换为片元集合。片元定义为一组数据,并对颜色缓冲区中的像素进行更行。片元处理:对各个片元进行操作(如纹理操作),进而进行各种操作确定片元的颜色值。输出合并:片元与颜色缓冲区中的像素进行比较或合并,进而更行像素的颜色值。 顶点操作包括转换操作、光照操作和动画操
2015-10-09 09:45:32 1677
原创 计算机图形学——基于3D游戏开发技术——第一章游戏模型
第一章——游戏模型1.2多边形网格opengl支持凸多边形;Direct3d仅支持三角形;细分操作:低分辨率向高分辨率转化的过程简化操作:高分辨率向低分辨率转换的过程1.2.1创建多边形网格(美工方面)1.2.2多边形网格的表达方式第一种表达方式:列举顶点,顺序读取3个顶点即可构成一个三角形。顶点存储于顶点缓冲区。非索引三角形列表:包含冗余顶点数据(一般不用)索
2015-10-08 10:52:45 1530
原创 unity3d Mecanim animator系统
我的理解就是新版的这个动画系统,能够把一个模型中的动作复制到另一个模型上去。比如unity3d 自带的这个修理工(模型1),它本身有以下动作:另外一个模型solider(模型2)有以下动作:我的模型2想使用模型1中的动作怎么办?新版mecanim animator能够解决这个问题。下面这幅图说明了解决方案:首先呢,我们将模型2的动画类型在inspect面板中改成
2015-10-04 15:27:08 715
原创 OpengGL第八版的第一个例子
不得不说,opengl第八版和第七版改动太大了。第八版的第一个例子是按可编程渲染管线来讲的。网上很多pengl入门教程用的还是固定管线的知识。关于固定管线和可编程渲染管线的区别可以参考知乎:可编程渲染和固定渲染第八版的第一个例子使用了VAO,VBO /////////////////////////////////////////////////////////////////
2015-10-01 17:31:55 818
原创 opengl 版本
前两天买的opengl红宝书第八版还没到,于是在网上找了个教程开始学习。今天书到了,才发现前几天学的全是过时的旧版gl内容。晚上看书的时候发现第一个例子都这么难,心理不免有些失落。配置了半天环境,最后终于出图像了。现在记录一下中途遇到的问题:1、配置开发环境的时候,我是参考这篇文章来的;点击打开链接2、运行后发现自己的显卡只能支持opengl4.2,例子中的glutInitCo
2015-09-30 19:55:05 460
转载 opengl 获取鼠标在世界坐标系中的坐标
glMouseFun(fun);回调的函数void fun(int button,int state, int x, int y)中,(x,y)表示的是鼠标在窗口内的位置,我们需要将其转化为世界坐标系中的位置//求鼠标在世界坐标系中的位置void mouse(int button, int state, int x, int y){ GLint viewport[4]; GLdoubl
2015-09-29 21:32:20 7208 1
转载 opengl中的坐标系
OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。世界坐标系以屏幕中心为原点(0, 0, 0)。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。当前绘图坐标系是 绘制物体时的坐标系。程序刚初始化时,世界坐标系和当前绘图坐标系是重合的。当用glTranslatef(),glScalef(), glRota
2015-09-29 10:22:13 1146
转载 opengl的三维与二维转换
实际上,从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤 (括号内表示的是相应的图形学概念): 第一步,将相机置于三角架上,让它对准三维景物(视点变换,Viewing Transformation)。 第二步,将三维物体放在适当的位置(模型变换,Modeling Transformation)。 第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上(投影变换,Pr
2015-09-28 20:32:37 5449 1
转载 opengl glBegin() glEnd() 中常用函数
1.在glBegin()和glEnd()之间可调用的函数函数 函数意义glVertex*() 设置顶点坐标glColor*() 设置当前颜色glIndex*() 设置当前颜色表glNormal*() 设置法向坐标glCoord*() 产生坐标glCallList(),glCallLists() 执行显示列表glTexCoord*() 设置纹理
2015-09-26 21:02:16 1188
转载 Unity3D学习笔记(十八)使用插件NGUI制作小地图
原本只是想用unity自带的GUI功能实现魔兽世界的小地图效果,结果折腾了一个晚上。原来的思路如下:根据玩家坐标,计算出应显示的地图缩略图部分(128×128);用GUI遮罩将非白色的部分剔除(这样可以实现任意形状的小地图);将地图框叠加到第二步中的纹理上;将玩家指示物放置在地图中心,并根据当前玩家的Transform.Rotation计算出指示物的旋转角度;
2015-09-23 11:16:39 905
转载 unity3d 学习笔记四 skybox(天空盒) light(光源) halo(光晕)
Unity3D学习笔记(四)天空、光晕和迷雾六年前第一次接触《魔兽世界》的时候,被其绚丽的画面所折服,一个叫做贫瘠之地的地方,深深印在我的脑海里。当时在艾泽拉斯大陆还不能使用飞行坐骑,试想一下孤身一人在银色的月光下赶路,可能还有你的战斗小伙伴,静谧的夜晚,皎洁的月光,一起走过了六年……即便是现在回想起来,浮现在脑海中的不是T123456S123456,而是十字路口的夜空。
2015-09-22 20:28:01 7041
转载 Unity3D学习笔记(十二)预制
熟悉Flash的朋友对“元件”这个概念一定不会陌生,想像一下如果要制作一个漫天飞雪的视觉效果,比较合适的思路是预先制作几种雪花的元件,然后在场景里随机摆放。那为什么不使用复制呢?因为一旦需要修改某个雪花的造型,我们就必须对每个以它为模版克隆出来的雪花进行修改,这工作量是枯燥而巨大的。在unity中元件的概念叫做预制(Prefab),其实在一开始做联系的时候就接触过了。不论是导入自定义模型,
2015-09-22 20:01:29 732
转载 Unity3D学习笔记(十)物理引擎:碰撞器
物理引擎(Physics Engine和碰撞器(Collider),最近网络上很流行一句话可以用来形容第一次听到这两个词的感觉:虽然不是很明白,但是感觉好像很厉害的样子……^_^。其实这它们在游戏中的出镜率是相当高的,比如前段时间火到爆表的《愤怒的小鸟》、《割绳子》,还有《鳄鱼小顽皮爱洗澡》之类的,都是物理引擎的出色应用。而碰撞则是其中的一个部分而已,本篇笔记会对在unity中碰撞器的使用做个记录
2015-09-22 19:36:52 1020
转载 Unity3D学习笔记(八) 动画编辑器(animation窗口)
在unity3D内有PlayerPrefs类进行简单数据保存,如SetInt和GetInt存取整型数据,SetFloat和GetFloat存取浮点型数据,SetString和GetString存取字符型数据。使用的是键值对映射的方式进行存取。 每个项目拥有各自的键值对库(不同项目不同库),一旦存储好键值对,无论是场景变换还是重启开机都能取出原来的数据。需要注意的是,这个键值对库会随游戏编译
2015-09-22 19:22:21 3309
转载 unity3d 学习笔记(七) 类的基本函数学习
1.unity3D中脚本类若不是MonoBehaviour子类,则不含回调函数,不可添加给游戏对象,即要自行在其他MonoBehaviour子类中实例化。因此对于想要随场景载入自动实例化,且在场景中时时存在的类,就算不想用到update等回调函数最好也作为MonoBehaviour的子类。2.unity3d的脚本类中即使是MonoBehaviour子类,如果不把其附加在GO身上,构造函
2015-09-22 18:45:44 538
转载 Unity3D学习笔记(六)音乐和音效
即使AFK魔兽世界已经好多年了,在生活中听到电视或者电台里放的奥格瑞玛的背景音乐的时候还是会虎躯一震。虽然不是联盟玩家,闪金镇狮王之傲旅店的背景音乐依然悠悠回荡在耳边。一个好的游戏没有好的配乐和音效,就好像无暇的水晶缺少了灯光的陪衬。而音乐不仅能渲染出玩家攻略游戏时的氛围,还能增加提高玩家对游戏的认知度。比如我说魂斗罗和超级马力,玩过的同学一定能回想起那简单而经典的声音。还有诸君可曾记得当
2015-09-22 17:15:09 1692
转载 unity3d 学习笔记(五) 湖泊与瀑布
炎炎夏日,杭州的温度一直居高不下,还好今天傍晚来了一场及时雨,不然真要被闷死啦。听着外面淅淅沥沥的雨声倍感惬意,来记录一下Unity中湖泊和瀑布的制作。导入Unity自带的水源素材包“Water (Pro Only)”,至于为什么有这个“仅限专业版”呢,那啥你懂的。如果没有的话也可以导入“Water Basic”,只是效果难看点,并不影响做练习。导入成功之后在"Standard Asset
2015-09-22 15:32:18 2919
转载 unity3dz学习笔记(三) 为地形添加花草树木
上一篇笔记记录了如何在引擎中建立一个地形,并赋予其山脉、道路、还有光照。并利用Unity内置的素材包,创建一个第一人称控制器来漫游整个游戏场景。本篇将继续介绍地形相关要点,为游戏场景添加地形细节,即那些花花草草。最后再介绍一个官方地形工具的使用,给山脉做一下“美容”。选中层次面板中的Terrain对象,检视面板中就出现了熟悉的地形工具栏。这次使用的是第六个“地形细节画刷”工具。其实这个
2015-09-22 11:52:06 2700
转载 unity3d 学习笔记(二) 创建地形
在开始设计游戏之前我们需要先重新建立一个我们自己的Unity工程。点击主菜单的"文件→新建工程(File->New Project…)",就可以看到新建工程向导对话框了。我把工程建建立在E:\Frederick\Unity3D\UnityFundStudy1,注意目前Unity对中文的支持不是很好,因此在 Unity中尽量不要使用中文,防止出现各种各样莫名其妙的异常。点击确认创建,
2015-09-22 11:50:53 2654
原创 median of two sorted arrays
感觉这一题不难啊。用最常规的归并排序之后,找出中间的就行了。虽然不是最简单的方法,但一定是最方便的。class Solution {public: double findMedianSortedArrays(vector& nums1, vector& nums2){ vector tmp(nums1.size() + nums2.size()); int i =
2015-09-14 22:38:25 344
转载 hash_map和map
为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ... 这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的
2015-09-10 18:52:16 330
原创 模板编译的小错误
我在类中声明了析构函数,但是忘了定义这个函数。如果这个模板和main函数在同一个源文件中链接出现这个问题:Error 1 error LNK2019: unresolved external symbol "public: __thiscall LList,class std::allocator > >::~LList,class std::allocator > >(void)"
2015-09-07 19:10:22 483
原创 leetcode GrayCode 递归
Binary Code 转换为Gray Code。如: Binary Code :1011 要转换成Gray Code 1011 = 1(照写第一位), 1(第一位与第二位异或 1^0 = 1), 1(第二位异或第三位, 0^1=1), 0 (1^1 =0) = 1110 其实就等于 (1011 >> 1) ^ 1011 = 1110void gr
2015-09-07 09:32:20 386
原创 leetcode 024 swap nodes in pairs
交换相邻的两个节点,这个代码比较直观,就是先创建一个头结点,作为prev,还创建了一个swap函数交换两个指针。ListNode * swap(ListNode *A, ListNode *B) { if(!B) return A; A->next=B->next; B->next=A; return B; }
2015-09-01 20:58:28 413
转载 struct字节对齐
http://blog.chinaunix.net/uid-14802518-id-2784907.html现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原
2015-08-31 10:53:49 440
蓝牙A2DP库文件使用方法
2013-08-30
CSR8670---如何开发自己的应用程序
2013-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人