- 博客(119)
- 资源 (8)
- 收藏
- 关注
原创 算法思想-滑动窗口思想
## 算法思想-滑动窗口思想 在解Leetcode题的时候,遇到了几个新的算法思想,这个系列文章就把Leetcode中的一些算法思想做一些整理,包括老生常谈的动态规划,也包括我最新接触的滑动窗口思想,并查集等,另外,遇到新的题目的时候也会在这里做一些整理。##### 起源-计算机网络协议 在介绍滑动窗口思想之前,首先介绍这个算法思想的由来,是一种TCP网络协议-滑动窗口协议,其实在大学学计算机网络的时候,自己可能并没有对这个协议有太多的印象,也许是当时用的太少,工作之...
2021-02-11 22:03:26
334
原创 Unity学习笔记(2)- MonoBehaviour类的生命周期及脚本报错收集
在Unity中,脚本的职责就是做GameObject的逻辑驱动,所有需要挂载到GameObject上面的脚本,都需要继承自MonoBehaviour,MonoBehaviour是Unity中所有脚本驱动的基类(当你使用C#作为脚本语言时)。MonoBehaviour有一些事件函数会在特定的时间被调用,Unity的MonoBehaviour脚本的生命周期示意图如下: 需要说明的是,当脚
2017-05-14 15:23:18
7950
1
原创 Unity学习笔记(1)-“Hello World”之Unity的调试和log
作为一个合格的程序员,持续保持学习的状态是十分必要,学习3d有一段时间了,期间接触过虚幻引擎,unity等3d引擎,个人的看法是虚幻引擎功能强大,但unity更适合开发手游,想来自己从2011年底开始接触ios游戏开发时就接触过unity,当时因为自己一直在开发2d游戏,且在2d手机游戏开发上,cocos2d-x有着很好的易用性,所以选择了cocos2d-x作为自己的主要开发引擎学习,同时当时的自
2017-04-23 18:43:27
5551
1
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(20)----模型,网格和材质
openGL在cocos2d-x中的应用点,调用的api基本已经介绍的差不多了,这一篇介绍一些3d游戏中的概念,它们也和底层有一些关系,也是游戏中常用的一些封装。 当我们要在屏幕上绘制简单的图形时,我们直接计算点的坐标就可以,但是游戏世界中经常有些复杂的模型,例如房子汽车等,这些模型一般是用建模工具制作出来,并且导出数据到指定文件中,然后我们游戏中在读取文件把模型渲染出来,一般比较有名
2016-06-15 16:58:05
8946
2
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(19)----旋转表示法
从数学上表示旋转,可以有三种表示方法:矩阵法,欧拉角法和四元数法,我们之前已经介绍了矩阵法,它有个问题,就是容易造成万向节死锁,所谓万向节死锁,就是当绕一个轴旋转到90度的时候,再绕另外两个轴旋转的结果都是一样的,也就是说少了一个自由度,另外矩阵法其中有无用的数据,造成内存的浪费。 欧拉角法是由欧拉在十八世纪提出,它由三个角表示:俯仰角,yaw偏航角,roll滚转角。struct Eu
2016-06-15 15:11:28
5895
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(18)----实例化
cocos2d-x中的batchNode的方式可以提高相同的纹理的渲染效率,但是它使用的绘制方式还是glDrawElements的方式,它只是把相同的纹理的绘制命令只提交一次,剩下的重复绘制都调用glDrawElements即可,当绘制中的一些参数变化时,使用glMapBuffer获得数据的指针,然后修改数据,代码如下:glBufferData(GL_ARRAY_BUFFER, sizeof(_q
2016-06-15 14:02:36
6260
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(17)----发光体
cocos引擎支持四种发光体:环境光,方向光,点光源和聚光灯,上一篇已经介绍了基本光照模型,其中也介绍了环境光的算法,下面就介绍另外三种光源。 当一个光源很远的时候,来自光源的每条光线接近于平行,这看起来像是来自于同一个方向,比如太阳由于离我们无限远,所以太阳光被定义为平行光,因为所有的光线都是平行的,对场景中每个物体的光都保持一致,光照计算会和场景中的其他物体相似。 点光
2016-06-14 18:57:46
4092
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(16)----基本光照
cocos引擎目前已经支持3d功能,之前在3d教程中介绍了cocos2d-x的3d功能中的光照,但是只是粗略的介绍了四种光源,因为光照的重要性和复杂性,这个系列文章会分两篇介绍光照,本篇介绍光照的基础-ADS模型,下一篇详细介绍几种光源。 ADS模型是光照的基本模型,包括Ambient(环境光),Diffuse(漫反射)和Specular(点光源)三种光照在物体上的效果是这样的:
2016-06-14 11:28:01
5794
1
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(15)----帧缓冲
cocos2d-x中提供一个叫RenderTexture的类,它可以保存屏幕到一张图片,也可以在begin到end之间实现自己的绘制,俨然就是一个独立于屏幕的画布(关于RenderTexture的介绍文章地址:http://blog.csdn.net/bill_man/article/details/7250911),这个类其实使用了openGL的帧缓冲技术,在调用任何openGL命令之前,首先需
2016-06-13 11:37:12
6908
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(14)----深度测试
深度测试类似于颜色缓冲(颜色缓冲存储片元颜色),深度缓冲是由窗口系统自动创建的,它储存着16、24或32位的浮点数的深度值。在大多数系统中,是24位的。 当深度测试开启时,openGL会用每个片元的深度值和深度缓冲的值对比,执行一次深度测试,如果测试通过,深度缓冲就会用深度值更新,如果深度测试失败,则片元就被抛弃。深度测试是在像素着色器运行后,模板测试完成后,在屏幕空间中完成的。屏幕空间坐
2016-06-13 10:29:12
6074
1
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(13)----模板测试
像素着色器调用完成后。模板测试就开始了,它可以丢弃片元,模板缓冲在渲染时获得有意思的效果。 模板缓冲中一个模板值有8位大小,每个窗口都会创建一个默认的模板缓冲,它可以通过数据控制屏幕显示,从而形成了显示裁剪的效果,如图所示。
2016-06-12 10:54:03
5369
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(12)----立方体贴图和天空盒
本篇介绍3d游戏中的天空盒概念,天空盒就是游戏中的背景,它是一个包裹整个场景的立方体,它由六个图像构成一个环绕的环境,给玩家一种所在场景比实际上大得多的感觉,如下图所示。 创建天空盒的方法和创建其他节点一样调用create函数,那我们看看create函数里到底做了什么?bool Skybox::init(const std::string& positive_x, const std:
2016-06-11 16:51:29
9340
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(11)----摄像机
本篇文章介绍一个在游戏中的重要概念,在MVP矩阵中,视图矩阵和投影矩阵都和摄像机有关,说句白话,摄像机其实就是生成投影矩阵和视图矩阵的方式和原因,cocos2d-x中使用GamePlay3D类的Mat4类生成各种矩阵,一下就通过分析摄像机Camera类的代码来看这些矩阵是如何生成的。 首先来看正交矩阵的初始化代码:bool Camera::initOrthographic(float
2016-06-11 11:30:19
6592
3
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(10)----MVP矩阵
上一篇介绍了openGL的变换和坐标系,本篇就介绍游戏引擎中一个重要的概念-MVP矩阵,首先涉及到透视投影和正交投影的概念,关于这个概念请参考之前的文章(文章地址:http://blog.csdn.net/bill_man/article/details/48199593),其中介绍了透视投影和正交投影的概念。 上一篇文章介绍了MVP矩阵的概念,但是并没有在代码上涉及。
2016-06-10 12:35:39
10463
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(9)----变换和坐标系统
本篇会介绍openGL中的变换和坐标系统,由于篇幅的问题,本篇文章不会把重点的笔墨放在数学基础,如果对数学概念有疑问的读者可以翻一下大学的线性代数教材。 首先是向量的概念,向量是既有大小又有方向的量,他可以用带箭头的线段形象的表示,在openGL中,向量在计算光照上有非常大的作用,这点后面的文章会详细介绍。需要注意的是,在openGL中我们提到的向量常常是标准化向量,那什么是标准化向量
2016-06-09 11:03:42
7898
原创 《游戏引擎架构》读书笔记-游戏引擎中的C++
《游戏引擎架构》在两年前就买了,而且自己也大体的看过一遍,因为自己想学习引擎的底层知识,所以重新又找出了这本书再读一遍,并把根据自己的理解写一些读书笔记在这里与大家交流。 闲话少续,开始本篇的内容,这本书的第一部分是基础篇,第一章概述了一些引擎概念,第二章讲解了一些工具的用法(Visual Studio等),第三章介绍了C++,和一般的C++书不一样的是,本书讲解的C++应该更多的是引
2016-06-09 09:38:18
3885
1
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(8)----纹理
纹理(Texture)就是图片,它用来给物体增加细节,cocos2d-x中使用Texture2D类处理2D纹理贴图,本篇就从cocos2d-x中的Texture2D类介绍openGL纹理。 首先介绍纹理坐标的概念,2D纹理是一个图像数据的二维数组。用2D纹理渲染时,纹理坐标用作纹理图像中的索引。一般来说,在3D内容创作程序中将制作一个网格,每个顶点都有一个纹理坐标。2D纹理的纹理坐标是
2016-06-08 12:09:30
9303
3
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(7)----GLSL
上一篇博客介绍了cocos2d-x中的着色器类相关的结构,以及着色器的一些原理,这一篇将介绍着色器语言。
2016-06-07 11:54:04
9841
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(6)---cocos内置着色器
上一篇我们介绍了cocos2d-x绘制基本图形的基本流程,我们还留下了一个着色器的部分没有讲,本篇内容将从openGL的渲染流程讲起,介绍cocos2d-x中的着色器,openGL的渲染流程如图所示: openGL的绘制通常就是将顶点数据传输到openGL服务端。我们可以将一个顶点视为一个需要统一处理的数据包,这个包中的数据可以是我们需要的任何数据,通常其中几乎始终会包含
2016-06-02 18:22:37
8918
原创 unity学习笔记(1)-hello unity
unity3d是目前使用最广泛的3d游戏引擎之一,本系列教程将使用unity制作一款坦克大战游戏,从而带大家体验一下unity的使用。 这一篇教程主要介绍引擎的安装和环境的搭建,最后,我们会在手机上运行起来unity的第一个程序。 首先在unity的官方网站上下载unity的最新引擎,目前最新的版本是5.3.4,下载地址:http://unity3d.com/cn/ge
2016-06-01 14:49:34
3276
1
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(5)---绘制基本图形
最近完整的学习了learnopengl(http://www.learnopengl.com/),觉得非常有启发,从而又想起了这个长草许久的专题,正好趁这段时间,从本篇起完成这个专题,需要说明的是,从本系列的第五篇起将使用cocos2d-x3.10版本对应的代码,最早的三篇采用的是相对比较老的代码,但是我重新阅读后发现对理解有没有什么影响,所以暂时我不会升级之前的代码,但是为了保持和最新代码的一致
2016-06-01 14:35:59
4782
3
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(4)---混合
之前在项目中就使用过混合,但是研究的不深入,近期美术的一个需求让我下决心重新深入的研究了一下混合以及它在cocos2d-x中的使用,在这里分享给大家。
2015-12-30 20:12:30
5319
1
原创 Cocos 3D功能初探学习笔记(3)---光照
3D游戏中光照对于游戏效果占有举足轻重的作用,也是与2D游戏的重要区别。cocos引擎也提供了完善的光效效果支持。光照就是光源照到物体上的效果,cocos引擎支持四种光源,继承自Node类,也就是说可以作为子节点防止到场景里,四种光源的基类是BaseLight,它是所有灯光的基类,cocos2d-x支持4种灯光,环境光、方向光、点光源和聚光灯。每个灯光都有一个灯光标记lightflag, 只有当物体的灯光掩码lightmask与(1<<lightFlag)做与运算不为0的时候这个物体才会被该灯光照亮。
2015-10-06 20:30:22
5209
2
原创 Cocos 3D功能初探学习笔记(2)---3D精灵
在2D阶段,最常用的绘制单元毫无疑问是精灵,通过精灵,我们可以将图片绘制到屏幕上;3d阶段,我们需要绘制在屏幕上的变成了美术人员通过3dmax等工具做出来的3d模型,绘制3D精灵是cocos最早的一批功能之一,也是比较重要的功能之一,本节我们就来学习3D精灵的绘制。
2015-09-12 19:20:28
5111
1
原创 Cocos 3D功能初探学习笔记(1)---摄像机
本篇首先介绍摄像机,其实2D时cocos引擎就有摄像机这个概念,每个节点都拥有一个摄像机类,当时的摄像机类的使用实例就是实现节点对象的缩放旋转,因为节点本身就自带这些功能,所以摄像机使用的场合并不多,笔者只在有一次为了实现一个正面视角向前进效果的时候为了让场景有一个“假”3D的效果的时候使用了setEyeXYZ之类的接口,但在3D中,摄像机是个很重要的概念,因为如果直接在设备上显示标准几何模型的坐标,可能屏幕上什么都看不到,因为模型坐标的范围可能不与设备坐标范围相对应,显示器本身是个平面固定的二维矩形区域,
2015-09-03 23:17:24
10815
2
原创 cocos2d-x性能优化的那些事
年前在对我做的项目做性能优化,虽然在开发中,性能问题是一直关注着的,但是这个东西依然需要在后期做一段时间的优化的,也遇到不少坑,在这里分享下,也记作笔记,另外也欢迎大家有这方面的问题经验在这里讨论。性能的优化主要是亮点,内存的优化和运行效率的优化1.内存的优化 说内存的优化,首先要知道有什么东西会占据程序的内存,可优化的主要是两部分:数据和资源,先说数据,做短连接的游戏客户端有两种处理
2015-02-20 14:23:00
15147
4
原创 不忘初心
今天终于有时间整理整理书柜,难得静下来想想自己的路,整理这一年的书,也是整理这一年的路,很遗憾,除了考研的复习书,没有完整的看完一本;如同读书一样,整个人也变得浮躁了,功利了,怨天尤人了........ 还记得上大学时,除了从学校图书馆借书,就开始自己用当家教的钱买书,这里插一句,当时虽然我不喜欢当家教,但却做的很认真,我每次上课都手写讲义,备课,很受学生欢迎,虽然我当时确定一定以及
2015-01-24 20:02:10
3173
5
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(3)----BATCH_COMMAND
个人原创,欢迎转载,转载请注明原文地址http://blog.csdn.net/bill_man上一篇介绍了QUAD_COMMAND渲染命令,顺带介绍了VAO和VBO,这一篇介绍批处理渲染命令BatchCommand,批处理命令的处理在Render中比较简单else if(commandType == RenderCommand::Type:: BATCH_COMMAND){ //将之
2014-08-15 20:52:05
6214
7
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(2)----QUAD_COMMAND
个人原创,欢迎转载,转载请注明原文地址http://blog.csdn.net/bill_man 上一篇文章介绍了cocos2d-x的基本渲染结构,这篇顺着之前的渲染结构介绍渲染命令QUAD_COMMAND命令的部分,通过这部分的函数,学习opengl处理图片渲染的方法,首先介绍这节需要涉及到的基本概念VAO和VBO。VAO和VBO: 顶点数组对象(Vertex Array O
2014-07-31 11:18:23
10533
7
原创 cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构
cocos2D-X 3.0渲染结构代码讲解,也是cocos2D-X源码讲解系列文章和从cocos2D-X学习OpenGL系列文章的开始
2014-06-29 22:17:48
17875
8
原创 关于cocos2d-x权威指南,关于我
非常高兴的告诉大家,我本人编写cocos2d-x书籍----cocos2d-x权威指南已经出版了,感谢大家一直以来的支持,可以说,正是有了大家对于我原创cocos2d-x文章的支持,才有了这本书。 关于这本书,他是我本人一直以来的梦想,能有机会写这样一本书,是我个人的荣幸。另外一点就是自从书出版发行以来,我收到了很多读者的反馈,无论是好与不好的评价,我都感到很温暖,在这里我说说我对于
2013-04-24 23:55:07
17268
62
原创 cocos2D-x初探学习笔记(32)-cocos2d-x & javascript跨平台初体验
近日,cocos2d家族开始了版本的联合发布,也就是说从cocos2d-x的2.1版本开始,终于可以实现广大开发者期盼已久的一套代码横跨ios,android和html5的梦想了,这次联合发布的包括cocosBuilder,cocos2d-iphone,cocos2d-x和cocos2d-html5版本,这篇文章就是笔者对这套开发工具的初体验经验总结。使用的是第二次联合发布的cocos2d-x的2
2013-02-14 01:33:41
25781
5
原创 cocos2D-x初探学习笔记(31)2.1新特性CCPhysicsSprite
本篇文章继续介绍cocos2D-x 2.1的新特性:CCPhysicsSprite 和CCPhysicsDebugNode,从名称上就可以看出来这两个类是和物理引擎相关的类,和之前介绍的CCDrawNode一样,CCPhysicsSprite 没有提供新功能,而是对之前功能的一个封装。CCPhysicsSprite 定义一个物理类绑定的精灵,它继承自CCSprite精灵类,它的使用来看一下Test
2013-01-20 16:32:30
14248
1
原创 cocos2d-x初探学习笔记(30)2.1新特性之CCClippingNode
从本篇起介绍一些cocos2d-x的新功能,包括CocosBuilder动画等功能,还包括从2.1版本添加的一些新特性,本篇文章就介绍一下2.1中我非常喜欢的一个新特性--可以根据一个模板切割图片的节点--CCClippingNode。这个类提供了一种不规则切割图片的方式,在这种方式以前,我们可以使用纹理类自带的setTextureRect函数来切割矩形区域,这种方式就像是J2me的setClip
2013-01-13 17:05:16
25152
8
原创 cocos2d-x初探学习笔记(29)-cocosBuilder
cocosBuilder编辑器正是作为可视化编辑的补充,成为cocos2D-iphone和cocos2D-x的可视化编辑器,cocos2D-x从2.0版本开始支持cocosBuilder,同样cocosBuilder也是2.0版本与之对应,本篇来就介绍cocoBuilder编辑器的使用和将cocosBuilder工程倒入到cocos2D-x的程序工程里。 可以通过cocosBuild
2012-09-15 10:27:34
30633
13
原创 cocos2d-html5初探学习笔记(1)-配置环境
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man期盼已久的cocos2d-html5版本终于在日前发布了alpha版本,从本篇文章开始我将我的自学cocos2d-html5历程与大家分享。本篇介绍配置环境,为什么需要配置环境呢,这是由于浏览器的一些限制,浏览器禁止在本地访问诸如XMLHttpRe
2012-06-16 10:43:45
23349
5
原创 移动开发之我见-移动平台游戏开发技术的前世今生
随着智能手机平台的兴起,移动平台应用开发变成现在热门的话题,而在应用开发中,游戏的开发占有举足轻重的位置,而移动平台的开发技术,尤其是游戏的开发技术在近几年的变化非常大,从最早门槛低的J2me技术开始,到针对各个平台的开发技术,直到现在依赖各种框架和引擎的跨平台技术.......大家对于技术的革新和追求从来就没有停止,本文就从一名普通开发者的角度来总结一下移动平台游戏开发技术的前世今生。在最早的J
2012-06-09 14:54:19
7441
原创 cocos2d-x游戏实例(28)-简易动作游戏(6)
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man本篇继续简易动作游戏实例,本篇加入简单血量条ui,效果如下:可以看到在左上角加入了一个显示血条的ui,是两条线宽不同的直线叠加的效果,首先声明了一个UILayer类,该类继承自CCLayer,使用其中的draw函数来绘制形状,该类的声明如下:除了初
2012-04-22 11:49:00
15016
9
原创 cocos2d-x游戏实例(27)-简易动作游戏(5)
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man继续简易动作游戏实例,本篇加入小怪并且加入小怪与主角的碰撞检测,效果如下:首先在场景的初始化函数中加入小怪的精灵,并设置位置与锚点:enemy = CCSprite::spriteWithFile("SpinningPeas.png");map->
2012-04-21 21:56:14
7857
1
Cocos2d-x2.1版本ChipmunkTest修改
2013-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人