7 bill_man

尚未进行身份认证

从事手机游戏开发,喜欢钻研技术,努力成为优秀的程序员

等级
TA的排名 1k+

Unity学习笔记(2)- MonoBehaviour类的生命周期及脚本报错收集

在Unity中,脚本的职责就是做GameObject的逻辑驱动,所有需要挂载到GameObject上面的脚本,都需要继承自MonoBehaviour,MonoBehaviour是Unity中所有脚本驱动的基类(当你使用C#作为脚本语言时)。MonoBehaviour有一些事件函数会在特定的时间被调用,Unity的MonoBehaviour脚本的生命周期示意图如下:        需要说明的是,当脚

2017-05-14 15:23:18

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

cocos2D-X源码分析之从cocos2D-X学习OpenGL(20)----模型,网格和材质

openGL在cocos2d-x中的应用点,调用的api基本已经介绍的差不多了,这一篇介绍一些3d游戏中的概念,它们也和底层有一些关系,也是游戏中常用的一些封装。       当我们要在屏幕上绘制简单的图形时,我们直接计算点的坐标就可以,但是游戏世界中经常有些复杂的模型,例如房子汽车等,这些模型一般是用建模工具制作出来,并且导出数据到指定文件中,然后我们游戏中在读取文件把模型渲染出来,一般比较有名

2016-06-15 16:58:05

cocos2D-X源码分析之从cocos2D-X学习OpenGL(19)----旋转表示法

从数学上表示旋转,可以有三种表示方法:矩阵法,欧拉角法和四元数法,我们之前已经介绍了矩阵法,它有个问题,就是容易造成万向节死锁,所谓万向节死锁,就是当绕一个轴旋转到90度的时候,再绕另外两个轴旋转的结果都是一样的,也就是说少了一个自由度,另外矩阵法其中有无用的数据,造成内存的浪费。       欧拉角法是由欧拉在十八世纪提出,它由三个角表示:俯仰角,yaw偏航角,roll滚转角。struct Eu

2016-06-15 15:11:28

cocos2D-X源码分析之从cocos2D-X学习OpenGL(18)----实例化

cocos2d-x中的batchNode的方式可以提高相同的纹理的渲染效率,但是它使用的绘制方式还是glDrawElements的方式,它只是把相同的纹理的绘制命令只提交一次,剩下的重复绘制都调用glDrawElements即可,当绘制中的一些参数变化时,使用glMapBuffer获得数据的指针,然后修改数据,代码如下:glBufferData(GL_ARRAY_BUFFER, sizeof(_q

2016-06-15 14:02:36

cocos2D-X源码分析之从cocos2D-X学习OpenGL(17)----发光体

cocos引擎支持四种发光体:环境光,方向光,点光源和聚光灯,上一篇已经介绍了基本光照模型,其中也介绍了环境光的算法,下面就介绍另外三种光源。       当一个光源很远的时候,来自光源的每条光线接近于平行,这看起来像是来自于同一个方向,比如太阳由于离我们无限远,所以太阳光被定义为平行光,因为所有的光线都是平行的,对场景中每个物体的光都保持一致,光照计算会和场景中的其他物体相似。       点光

2016-06-14 18:57:46

cocos2D-X源码分析之从cocos2D-X学习OpenGL(16)----基本光照

cocos引擎目前已经支持3d功能,之前在3d教程中介绍了cocos2d-x的3d功能中的光照,但是只是粗略的介绍了四种光源,因为光照的重要性和复杂性,这个系列文章会分两篇介绍光照,本篇介绍光照的基础-ADS模型,下一篇详细介绍几种光源。       ADS模型是光照的基本模型,包括Ambient(环境光),Diffuse(漫反射)和Specular(点光源)三种光照在物体上的效果是这样的:   

2016-06-14 11:28:01

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

cocos2D-X源码分析之从cocos2D-X学习OpenGL(14)----深度测试

深度测试类似于颜色缓冲(颜色缓冲存储片元颜色),深度缓冲是由窗口系统自动创建的,它储存着16、24或32位的浮点数的深度值。在大多数系统中,是24位的。     当深度测试开启时,openGL会用每个片元的深度值和深度缓冲的值对比,执行一次深度测试,如果测试通过,深度缓冲就会用深度值更新,如果深度测试失败,则片元就被抛弃。深度测试是在像素着色器运行后,模板测试完成后,在屏幕空间中完成的。屏幕空间坐

2016-06-13 10:29:12

cocos2D-X源码分析之从cocos2D-X学习OpenGL(13)----模板测试

像素着色器调用完成后。模板测试就开始了,它可以丢弃片元,模板缓冲在渲染时获得有意思的效果。     模板缓冲中一个模板值有8位大小,每个窗口都会创建一个默认的模板缓冲,它可以通过数据控制屏幕显示,从而形成了显示裁剪的效果,如图所示。

2016-06-12 10:54:03

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

cocos2D-X源码分析之从cocos2D-X学习OpenGL(11)----摄像机

本篇文章介绍一个在游戏中的重要概念,在MVP矩阵中,视图矩阵和投影矩阵都和摄像机有关,说句白话,摄像机其实就是生成投影矩阵和视图矩阵的方式和原因,cocos2d-x中使用GamePlay3D类的Mat4类生成各种矩阵,一下就通过分析摄像机Camera类的代码来看这些矩阵是如何生成的。       首先来看正交矩阵的初始化代码:bool Camera::initOrthographic(float

2016-06-11 11:30:19

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

cocos2D-X源码分析之从cocos2D-X学习OpenGL(9)----变换和坐标系统

本篇会介绍openGL中的变换和坐标系统,由于篇幅的问题,本篇文章不会把重点的笔墨放在数学基础,如果对数学概念有疑问的读者可以翻一下大学的线性代数教材。       首先是向量的概念,向量是既有大小又有方向的量,他可以用带箭头的线段形象的表示,在openGL中,向量在计算光照上有非常大的作用,这点后面的文章会详细介绍。需要注意的是,在openGL中我们提到的向量常常是标准化向量,那什么是标准化向量

2016-06-09 11:03:42

《游戏引擎架构》读书笔记-游戏引擎中的C++

《游戏引擎架构》在两年前就买了,而且自己也大体的看过一遍,因为自己想学习引擎的底层知识,所以重新又找出了这本书再读一遍,并把根据自己的理解写一些读书笔记在这里与大家交流。       闲话少续,开始本篇的内容,这本书的第一部分是基础篇,第一章概述了一些引擎概念,第二章讲解了一些工具的用法(Visual Studio等),第三章介绍了C++,和一般的C++书不一样的是,本书讲解的C++应该更多的是引

2016-06-09 09:38:18

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

cocos2D-X源码分析之从cocos2D-X学习OpenGL(7)----GLSL

上一篇博客介绍了cocos2d-x中的着色器类相关的结构,以及着色器的一些原理,这一篇将介绍着色器语言。

2016-06-07 11:54:04

cocos2D-X源码分析之从cocos2D-X学习OpenGL(6)---cocos内置着色器

上一篇我们介绍了cocos2d-x绘制基本图形的基本流程,我们还留下了一个着色器的部分没有讲,本篇内容将从openGL的渲染流程讲起,介绍cocos2d-x中的着色器,openGL的渲染流程如图所示:              openGL的绘制通常就是将顶点数据传输到openGL服务端。我们可以将一个顶点视为一个需要统一处理的数据包,这个包中的数据可以是我们需要的任何数据,通常其中几乎始终会包含

2016-06-02 18:22:37

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

cocos2D-X源码分析之从cocos2D-X学习OpenGL(5)---绘制基本图形

最近完整的学习了learnopengl(http://www.learnopengl.com/),觉得非常有启发,从而又想起了这个长草许久的专题,正好趁这段时间,从本篇起完成这个专题,需要说明的是,从本系列的第五篇起将使用cocos2d-x3.10版本对应的代码,最早的三篇采用的是相对比较老的代码,但是我重新阅读后发现对理解有没有什么影响,所以暂时我不会升级之前的代码,但是为了保持和最新代码的一致

2016-06-01 14:35:59

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!