- 博客(43)
- 资源 (4)
- 收藏
- 关注
原创 OpenGL应用开发---基础变换
一、齐次坐标系向量的w分量也叫齐次坐标。想要从齐次向量得到3D向量,我们可以把x、y和z坐标分别除以w坐标。我们通常不会注意这个问题,因为w分量通常是1.0。使用齐次坐标有几点好处:它允许我们在3D向量上进行位移(如果没有w分量我们是不能位移向量的)。如果一个向量的齐次坐标是0,这个坐标就是方向向量(Direction Vector),因为w坐标是0,这个向量就不能位移(译注:这也就是我们说的不能位
2016-12-21 00:57:32 657
原创 OpenGL应用开发---纹理
一、纹理的作用在进行模型渲染的时候为了使模型看起来更加的逼真,细节更加的真实我们使用纹理贴在物体的表面。使用纹理我们可以不用再为每个顶点指定颜色,通过纹理映射到顶点上然后对纹理进行操作,和配色。然模型显得更加的漂亮、真实。二、纹理坐标为了能够使纹理能够正确的映射到模型的每一个顶点上,在我们定义模型坐标时,额外还要指定每个顶点各自对应纹理坐标,纹理坐标用于指定当前顶点对应的是纹理的那个部分。一张纹理是
2016-12-19 01:47:24 1282
原创 OpenGL应用开发---Shader基础
一、着色器代码规范我们在编写一个着色器是首先需要声明的就是使用的着色器代码的版本号,根据不同的版本号着色器编译器会更具不同的方式来解析着色器的语法#version 330 core在这其中 #version 是一个宏定义表示当前所用的版本号,在后面330表示使用的是OpenGL3.3版本的着色器代码,core表示的是使用的OpenGL3.3核心版本的的着色器代码不会向下兼容。你也可以忽略layout
2016-12-17 00:04:34 617
原创 OpenGL应用开发---材质
一、材质是什么在现实世界中每一个物体都有颜色、以及物体表面看起来像什么质地、以及对环境中的光照进行反射和折射等,在渲染系统中材质则是记录物体的色彩、纹理、光滑度、透明度、反射率、折射率、发光度等属性等然后将材质附加到模型的表面使模型开起来更加的象现实世界中的一个真实的物体。在顶点着色器阶段我们就会记录物体与光照的相互作用,然后将这些计算结果保存在材质中,然后将材质传递到渲染其中进行渲染最后得到我们想
2016-12-16 01:28:33 446
原创 OpenGL应用开发---图形绘制
一、OpenGL中的一些基本概念1、顶点缓冲对象(VBO) VBO的作用就是管理GPU中的储存数据的内存块,每当我们在GPU中分配一块内存并向GPU中发送一个数据块时,就可以创建一个顶点缓冲对象来管理它,这样我们就可以针对不同的数据块使用不同的VBO来进行数据的操作。使用这些缓冲对象的好处是我们可以一次性的发送一大批数据到显卡上,而不是每个顶点发送一次。从CPU把数据发送到显卡相对较慢,所以只要可能
2016-12-10 02:05:53 684
原创 UnityGUI系统之EventSystem
一、EventSystem对象基本属性EventSystem对象由三个组件组成 :EventSystem组件 它主要负责处理输入信息判读、射线投射、通知目标对象进行事件的处理等。一个场景中只能有一个EventSystem组件,并且需要一个继承BaseInputModule类型组件的协助才能工作。在EventSystem组件上还融合BaseRaycaster类,通过它从摄像机发出一条射线来判断当
2016-11-30 00:21:56 2096
原创 Unity脚本开发之对象的基本操作
一、对象之间发送消息有时候在游戏场景中游戏对象与游戏对象之间需要相互通信以实现对象之间的互动,在GameObject类有一个方法实现了对象与对象之间的通信。SendMessage(string methodName, //指定接受消息的对象的脚本中一个叫mentodName的函数处理这个函数[DefaultValue("null")] object value, //发送的消息参数[Default
2016-11-26 00:25:23 1462
原创 OpenGL应用开发---渲染管线
一、图形渲染与渲染流水线在计算机中的图形渲染,给定一个视点,和需要绘制的图形的几何顶点的几何,然后通过一系列的数学运算,然后转换为计算机可以识别的数据最后显示在二维的屏幕上。在我们生产手机的工厂中就有许多的流水线,流水线的每个阶段都执行不同的功能,而在计算机图形中我们也是将图形的渲染分为几个大的阶段,而每个大的阶段中又有几个小的阶段,在大的阶段中我们通过把渲染管线分为三个阶段 1、应用程
2016-11-07 01:13:47 927
原创 数据结构之线性结构---队列 链式储存
一、队列链式储存的特点在使用顺序储存创建一个队列是,此时这个队列是有限储存的,有时候无法满足我们的储存需要,而队列的链式储存则是使用单链表作为一个容器,在单链表的基础上限制了元素的进入出去的方式而形成了,队列这个暑假结构。向队列中插入元素: 弹出队列中的一个元素: 二、队列的链式储存实现AL_Node.h#ifndef AL_NODE_INCLUDE#define AL_NODE_INCLUD
2016-11-03 14:34:48 491
原创 数据结构之线性结构---队列 顺序储存
一、队列的特点队列是一种比较特殊的数据结构,它只允许在一端插入元素,而在另一段删除元素,队列也是一种先入先出的数据结构允许插入的一端叫做队尾,而允许删除的一端叫做队头。向队列中插入元素:向队列中删除元素:在队列中我们为了记录队头和对位的位置通常会建立一个指针来记录队头和对队尾,即队头不一定是内存中下标为0的内存位置。这样可以在使用顺序储存的时候,不必再删除一个元之后移动全部的元素,而造成移动元素的的
2016-10-31 23:45:52 552
原创 设计模式之行为模式---状态模式
一、状态设计模式的特点当一个对象内部具允许有多个状态改变时,我们将不同的状态提取出来作为一个单独的类来描述一个状态,这样可以很容易的扩展对象,使其具有更多的状态表达,而不会影响到对象本身。一个状态模式的结构图:State作为一个抽象接口类,向外界提供一个对象,而派生类继承自State实现接口作为不同的状态表示。Context是一个状态调配类,它根据客户端传递过来的指令判断对象需要执行那种状态,而指定
2016-10-25 11:34:36 508
原创 Unity脚本开发之常用工具类
一、Time类Time时间类为开发者提供了一些在程序运行时时间上的处理函数,我们可以非常方便的提供给我们使用在Time中提供的一些函数有://记录上一帧所消耗的时间,会受时间缩放的影响public static float deltaTime { get; }//记录从程序运行到现在的时间会受时间缩放的影响static float time { get; }//设置游戏里面的时间与现实世界里的时
2016-10-24 00:50:10 4024
原创 设计模式之结构性模式---外观模式
一、外观模式的特点外观模式的作用是将底层的所有子系统统一成一个接口提供给客户端调用,客户端不必知道底层子系统联系只需要知道调用接口就能够实现功能。列如做投资的时候不必直接去与股票打交道,通过直接够买上层基金能够赚到钱就行,而底部股票与股票之间的联系‘购买了那些股票,如何操作等我们不必知道。二、外观模式的实现1、外观模式的实现模型2、外观模型代码实现using System;class SubSyst
2016-10-20 10:47:18 657
原创 算法设计之算法概论
一、数据结构与算法之间的关系数据结构描述的是数据之间的储存关系,而算法则是为了解决一个问题,对数据进行一定操作而诞生的方法,二者相互联系,缺一不可。就像人和食物的关系,人不能够没有食物而存在,而食物的单独存在也没有任何意义。二、算法的定义算法是对解决特定的问题的方法步骤的描述,在计算机领域中表现为计算机指令的有序序列,每一个指令则执行一个或者多个操作。三、算法的特征1、有穷性 有穷性是指我们设计
2016-10-18 00:42:26 682
原创 设计模式之行为型模式---策略模式
一、策略模式的特点在策略模式中我们定义一个基类Strategy作为公共的接口类,然后在下方不同的类通过继承实现同一个接口,实现不同的功能,这样做到在客户端可以调用统一个接口,根据不同的需求实现不同的功能。而Contex作为一个调配类根据客户指定的功能,调用实现这个功能的接口。策略模式作用就是将实现功能的算法进行单独的封装,使用时可以相互替代其他的算法。策略模式的优点:1、可以在自己定义的算法之间自由
2016-10-17 17:59:59 466
原创 UnityUGUI系统之Sprite
一、Unity中的2D图片的导入在Unity中我们将2D图片导入进来的时候,会选择图片的保存格式,根据不同的格式在Unity中具有不同的用途。所以在我们导入图片之后都需要进行一些设置。Texture Type : 设置导入图片的使用途径通常我们在使用图片进行GUI或者2D精灵的使用时则选择 Sprite选项。Sptrite Mode :设置图片的形式,Single:在这种模式下将 sprite图
2016-10-15 00:24:42 10626
原创 3D数学基础----四元素
二、四元数1、四元素的表示 四元数使用一个三维向量来表示旋转的坐标轴和一个旋转角度。其物理意义为 :围绕一个通过坐标系原点的坐标轴旋转一定的角度四元数的表示方法 : w表示旋转量,其余 的表示坐标轴。2、四元素中的旋转角与旋转轴在使用矩阵进行我们使用n表示旋转轴,θ表示旋转角度,同样我们不必关系旋转轴n的长度,把他当做一个单位向量来处理,在四元数中也是储存了旋转轴和旋转角度,但储存的对应方式不同
2016-10-14 20:28:49 2711
原创 Unity常用类之脚本、对象与组件
一、MonoBehaviour类的生命周期MonoBehaviour是Unity中所有类的基类,当我们创建一个类时Unity会默认继承自MonoBehaviour,而继承自MonoBehaviour类的类叫做运行运行时类,运行时类我们不能够通过new的方法创建类实列,只有Unity在内部觉得能够创建实列的时候才会创建当前类的实列,在需要销毁的时候由Unity内部销毁。每个继承自MonoBehavio
2016-10-14 20:19:35 4293
原创 数据结构之线性结构---栈 链式储存
一、链式储存的特点:栈的链式储存是通过链表的方式进行储存,链式储存的优点在于 1、比顺序存储结构的存储密度小 每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多。2、逻辑上相邻的节点物理上不必相邻。3、插入、删除灵活 不必移动节点,只要改变节点中的指针。二、栈的链式储存实现AL_Node.h#ifndef AL_NODE_INCLUDE#define AL_NODE_
2016-10-09 15:33:51 857
原创 数据结构之线性结构---栈 顺序储存
一、栈的特点栈是一种受限的线性表,它规定只能够在表的尾部进行插入和删除,我们把允许插入和删除元素的一端称为栈顶,而另一段称为栈底,没有任何元素的元素栈称为空栈。栈中的元素进出的规则为先入后出,即先进入栈的元素后出栈而后进入栈的元素先出栈。在对栈栈中的元素进行操作时只能够操作栈顶的元素。栈中储存元素的三种状态: 当储存的元素超过了栈的储存空间则会发生栈中元素的溢出。向栈中插入元素叫做入栈: t
2016-10-08 00:51:00 2352
原创 数据结构之线性结构--双向循环链表
一、双向循环链表特点双向循环链表的结构是在双向链表的基础上使头节点的前驱指针指向末尾的节点,而使末尾的节点的一个指针指向开始节点,形成一个循环结构。 双向循环链表在进行节点的删除的时候的操作: 双向循环链表在进行节点的插入时的操作: 二、双向循环链表的实现AL_Node.h文件#ifndef AL_NODE_INCLUDE#define AL_NODE_INCLUDE#include
2016-10-08 00:47:06 3045
原创 UnityGUI系统之容器、下拉列表与自动布局
一、层容器简介作用层容器(Panel)的作用是作为一个容器,承载其它控件,可以使多个控件作为一整体一起操作层容器的基本属性 : Soure Image :设置层容器的背景图片Color ;设置层容器的背景颜色Raycast Target :是否接受射线检测二、自动布局当我们需要在容器中若有多个控件若果我们自己手动的排列顺序非常的麻烦,在Unity中给我们提供了几种排序的功能。1、水平布局与垂直布局
2016-10-08 00:42:13 7168
原创 UnityGUI系统之锚点与中心点
一、锚点的作用在Unity5中的UGUI系统中,它给我们提供了一一个像叶子一样的图标,这个就是Unity中的锚点,我们可将将这个叶子分为四部分: 这个锚点的作用是时控件到这四个点的距离不变,但若屏幕逐渐缩小时控件自身会缩小,通过这个方式我们可以做屏幕适配。在Unity 中也给我们提供了快捷设置锚点的工具: 在红色线框中的是将四个点设置到屏幕上的同一个地方而在绿色线框中将四个点分布到屏幕的不同区域
2016-10-08 00:37:56 16987
原创 数据结构之线性结构 --循环单链表
一、循环链表的简介循环链表在单链表的基础上使最后的一个节点的指针指向开始的节点形成一个循环的数据结构体,没有空指针的出现。循环链表在操作上和单链表差不多,单需要注意的是最后一个节点的指针用于时指向头结点的地址的。二、循环链表的c++实现AL_Node.h文件代码#ifndef AL_NODE_INCLUDE#define AL_NODE_INCLUDE#include <windows.h>te
2016-10-04 21:46:58 1189
原创 数据结构之线性结构--双向链表
一、双向链表在单链表中若需要查找某一个元素时,都必须从第一个元素开始进行查找,而双向链表除开头节点和最后一个节点外每个节点中储存有两个指针,这连个指针分别指向前一个节点的地址和后一个节点的地址,这样无论通过那个节点都能够寻找到其他的节点。 二、双向链表的基本操作双链表的删除除元素的时候需要注意的是,他有一个指向前驱指针和一个指向下一个节点的指针,当元素被删除时,上一个节点的指针会指向被删除节点的下
2016-10-02 21:39:16 4514
原创 数据结构之线性结构--单链表
三、链式储存结构1、 单链表 单链表的元素储存结构为 一个指向下一个元素的指针,和一个储存信息的变量,通过指针指向前一个元素或者后一个元素来实现元素与元素之间的关联。 单链表中的元素读取: 由于单链表中只能通过上一个元素的指针来获取下一个元素地址,所以在访问链表中的元素时,都必须从开始节点进行遍历寻找需要的元素。单链表中的元素插入: 单链表中的元素删除 : 单链表的
2016-10-02 21:04:41 792
原创 设计模式之创建型模式--桥接模式
一、什么是桥接模式桥接模式的作用是在一个模块中加入另一个模块使两个模块能够共同的工作,同时两个模块之间也不相互影响,每个模块都可以独立的更新。例如一个手机的由硬件系统中需要加入软件才能够是实现功能,我们则把软件模型单独实现,软件的更新和硬件的改变两个之间互补影响,但需要同时工作才能使手机运行。二、桥接模式的实现1、桥接模式的实现模型 Abstraction和RefinedAbstraction作为
2016-09-27 11:52:28 512
原创 UnityGUI系统之Toggle、Scrollbar
一、Toggle1、Toggle组件是一个开关组件,通常用于控制声音的开关,背包系统等,关卡难度的选择等。2、Toggle组件的基本组成: Background :指定控件的背景颜色 Checkmark :勾选的图形背景的颜色 Label :控件的文字3、Toggle组件的基本属性 Interactable :是否激活Toggle组件,勾选则是激活Transitionl : 设置Togg
2016-09-23 00:23:23 3342
原创 设计模式之创建型模式---建造者模式
一、建造者模式简介建造者模式(Builder Pattern)原理在于将一个复杂的问题分解为多个细小的问题,每个细小的问题则是一个对象,然后通过这些小对象构建成为复杂问题这个大的对象。也可以理解为这些小对象是一个单独的元器件,我们通过这些元器件进行不同的组合构建成不同且复杂的物体。在建造者模式中通过一个指挥者来判断客户端需要创建目标类型。建造者模式的优点: 1、独立的创建每个对象,易于扩展功能2、
2016-09-14 11:53:10 443
原创 设计模式之创建型模式---单例模式
一、单例模式简介在单例模式下,一个类负责创建自己的实例,且这个类只能创建一个唯一的实例对象,外部可以直接访问这个实例对象,单例模式常用语对象的创建。创建单例模式时,构造函数是私有的这样才能保障,在外部无法创建类实例化对象。二、单例模式的实现单例模式的实现模型:SingleObject类是一个单例类,在类中的getInstance()函数提供了实例对象的创建,并判断是否创建成功,在外部则通过调用这个函
2016-09-14 11:31:30 733
原创 UnityGUI系统之Canvas
一、Canvas与EventSystemCanvas是一个画布,就像我们绘图用的图纸一样,所有的控件都必须在Canvas中才能被绘制出来,在其他地方则不能被绘制出来。二、Canvas的基本属性首先我们需要知道画布上的图形绘制顺序:1、当处于同一层次的组件时则是先创建的组件,先绘制后创建的组件则后绘制,在层次结构上先创建的组件则处于下层,而后创建的组件则位于上层,在层级视图中,组件的排列顺序也是根据先
2016-09-14 00:14:31 11027
原创 设计模式之创建型模式---工厂模式
一、简单工厂模式工厂模式主要用于选择,根据客户不同的要求,使用同一个借口实现不同的功能,然后使用工厂类来判断使用哪个实例接口实现原理 : 创建一个抽象类作为借口提供子类通过继承实现接口,当客户需要不同的功能实现时,则创建不同的子类实例。Shape : 抽象类Circle 、Square 、Rectangle :子类实现不同接口ShapeFactory :工厂类判断使用哪个功能而创建哪个子类实例简
2016-09-13 11:41:01 558
原创 3D数学基础----欧拉角
旋转是对物体的一种操作,而朝向则是物体的一种状态,在对物体进行旋转时就会改变物体的朝向状态。一、欧拉角我们可以很快的构建一个旋转矩阵来对物体进行旋转,但在进行矩阵的构建时难度却很大,我们需要获取旋转轴的朝向等是非常困难的。欧拉角的核心思想是将需要旋转的角度分为绕坐标轴的三个坐标轴旋转的三个角度的组合。是一由单个单独的旋转矩阵组合起来的旋转矩阵。欧拉角的三个轴旋转顺序通常规定为: 1、先绕headi
2016-09-10 23:39:48 825
原创 UnityGUI系统之InputField
InputField是一种文本输入框,常用于在游戏开始名称或者密码的输入InputField 组成 :InputField :输入框的背景样式,它其实是一个Image组件Placeholder : 在输入框中默认显示的提示文字Text : 在向输入框输入文字时,显示输入的文字InputField的常用属性 Interactable :是否启用InputField组件,勾选择是启用Transitio
2016-09-10 16:58:45 10684
原创 UnityGUI系统之Slider
slider是一种滑动条,可以使用Slider来控制音量的大小等操作Slider控件的组成:Background : 滑动条的背景样式,即最初展现在我们面前的样子Fill : 指的是当滑动条滑动时,划过的区域展现出来的样子Handle :这是设置滑动条上按钮展现出来的样子Silder的基本属性 :Interactable :是否启用 Slider组件,勾选则是启用Transition : 设置滑动条
2016-09-04 00:17:10 4816
原创 UnityGUI系统之Text
Text组件常用于显示一些文字一、Text组件的常用属性介绍1、Text区域 :用于编辑需要显示的文字内容 2、Font : 用于设置文字的字体 3、Font Style :用于设置文字的风格 Normal : 没有风格 Bold : 文字加粗 Ltalic : 文字变斜 Bold and Italic : 字体加粗 并且变斜4、Font Size :设置文字的大小 5、L
2016-08-27 16:56:05 4007
原创 UntiyGUI系统之Image
Image用于显示显示一张图片一、Image的基本属性 0、Material :给图片添加一个材质,然后通过着色器使图片具有一些特殊的效果1、Sucrce Image :指定Image控件需要显示的图片2、Color : 指定Image的颜色3、Preserve Aspect :当勾选这个选项之后再对图片进行操作时,会保持图片的宽度和高度的比例不发生改变。4、Set Native Size :当点
2016-08-27 16:09:38 906
原创 设计模式之设计模式简介
一、设计模式设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。二、设计模式的分类1、创建型设计模式 2、结构型设计模式 3、行为型设计模式 三、设计模式之间的关系
2016-08-25 12:32:38 281
原创 UntiyGUI系统之Button
按钮使我们最常用的控件之一,在Unity也提供了按钮组件。一、按钮的基本属性 : 1、Interactable : 是否禁用按钮 ,勾选则不禁用2、Target Graphic : 正常状态下按钮的纹理3、Transition :设置不同状态下按钮的样式,分别有三种状态: None :是指没有样式 Color Tint : 是指在不同状态下的颜色 Sprite Swap : 是指在不同状态下
2016-08-25 12:19:52 807
原创 数据结构之线性结构--数组
一、什么是线性表 线性表是种由零个或者多个元素组成的有限序列,线性表强调元素是有限的,就像一个班的人数也是有限的,一个线性表中只有一个头和一个尾,中间的元素有一个前驱和一个后记。二、线性表的顺序储存方式1、 顺序储存结构中使用一片连续的内存来储存线性表中的所有元素。在C++中使用数组来实现储存。 2、顺序储存结构中的元素的插入方式 : 3、顺序储存结构中的元素的删除方式 ; 4、顺
2016-08-25 12:12:35 1113
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人