- 博客(44)
- 资源 (21)
- 收藏
- 关注
原创 untiy 3d ShaderLab_第5章_第一个被执行的Pass_2_3个渲染路径之外
我们现在可以编译并运行看看了。先把Camera切换到VertexLit模式下,如图所示,在针对Deferred和Forward渲染路径设计的Shader中,因为不能在VertexLit模式下执行,所以Always Pass也没有被执行。而在针对VertexLit渲染路径的Shader中,Always Pass的执行和在代码中的位置有关系,在代码中靠前,则先执行,然后被混合模式为Blend One One的Vertex Pass中输出的红色混合,输出为黄色;在代码中靠后,则后执行,其混合模式为Blend On
2016-04-29 18:44:43 4852
原创 untiy 3d ShaderLab_第5章_第一个被执行的Pass_1_不同LightMode 被选择的顺序
我们可以总结出,Unity在Deferred渲染路径下,则会寻找可在Deferred渲染模式下的Pass然后返回,并不会执行其他渲染路径下的Pass,但是如果找不到Deferred状态下的Pass,则会再寻找Forward模式下的Pass并执行,然后返回,如果Forward模式下的Pass依然没有找到,则会寻找VertexLit模式下的Pass并执行。在Forward渲染路径下,会优先寻找Forward模式下可渲染的Pass,如果找不到,才会寻找 VertexLit模式下可渲染的Pass。
2016-04-29 18:15:50 5188
原创 untiy 3d ShaderLab_第4章_基本的光照模型
对于粗糙物体表面的某一点,其亮度应该和入射光线与该点的垂直程度相关,也就是入射光线与此点法线的夹角相关。在上面的高光计算方式中,我们确确实实计算了一次入射光线的反射,然后考察此反射光线进入视野的程度。还有一种更简单、更易于调节的方法是使用入射光线和视线的中间平均值,即半角向量,然后使用此半角向量和法线计算出一个和视角相关的高光,此种高光计算方式即为BlinnPhong。
2016-04-29 17:31:07 3793
原创 Lua_第26章撰写 C 函数的技巧
26.1 数组操作 26.2 字符串处理 26.3 在 C 函数中保存状态 The Registry References UpvaluesLua 全局变量可以存放任何类型的 Lua 值,并且每一个独立的状态都有他 自己独立的全局变量集。然而,并不是在所有情况下,这种方法都是令人满意地解决方案,因为 Lua 代码可能会修改这些全局变量,危及 C 数据的完整性。为了避免这个问题, Lua 提供了一个独立的被称为 registry 的表,C 代码可以自由使用,但 Lua 代码不能访问他。
2016-04-29 15:48:55 4548
原创 计算机图形学(二)输出图元_6_OpenGL曲线函数_4_中点椭圆算法(下)
假设已经在整数屏幕坐标中给定rx,ry和椭圆中心,在中点椭圆算法中我们仅需增量的整数运算来确定决策参数的值。增量r2y 、r2x和2r2yx和2r2xy仅需在程序的开始求值一次。中点椭圆算法可以概括为下列步骤:
2016-04-27 16:22:54 4234
原创 Lua_第24章 扩展你的程序
作为配置语言是 LUA的一个重要应用。在这个章节里,我们举例说明如何用 LUA 设 置一个程序。让我们用一个简单的例子开始然后展开到更复杂的应用中。 首先,让我们想象一下一个简单的配置情节:你的 C程序(程序名为 PP)有一个 窗口界面并且可以让用户指定窗口的初始大小。显然,类似这样简单的应用,有多种解决方法比使用LUA更简单,比如环境变量或者存有变量值的文件。但,即使是用一个 简单的文本文件,你也不知道如何去解析。所以,最后决定采用一个 LUA 配置文件(这就是 LUA 程序中的纯文本文件)
2016-04-25 15:31:25 3799
原创 计算机图形学(二)输出图元_3_画线算法_2_DDA算法
数字微分分析仪(digital differential analyzer, DDA)方法是一种线段扫描转换算法,基于使用等式(3.4)或等式(3.5)计算的&x或&y。在一个坐标轴上以单位间隔对线段取样,从而确定另一个坐标轴上最靠近线路径的对应整数值。首先考虑如图3.6所示的具有正斜率的线段。例如,如果斜率小于等于1,则以单位x间隔(&x = 1)取样,并逐个计算每一个y值:下标k取整数值,从第一个点1开始递增直至最后端点。由于m可以是0与1之间的任意实数,所以计算出的y值必须取整。对于具有大于l的正斜率
2016-04-15 16:09:27 5376
原创 计算机图形学(二)输出图元_3_画线算法_1_直线方程
场景中的直线段由其两端点的坐标位置来定义。要在光栅监视器上显示一线段,图形系统必须先将两端点投影到整数屏幕坐标,并确定离两端点间的直线路径最近的像素位置。接下来将颜色值装人帧缓存相应的像素坐标处。视频控制器从帧缓存读出写入的颜色值并绘制屏幕像素。这一过程将一线段数字化为一组离散的整数位置。一般而言,这些位置是实际线路径的近似。例如,计算出的线位置(10.48, 20.51)转换为像素位置(10, 21)。坐标值舍入到整数,引起除水平和垂直以外所有线段的阶梯效应(“锯齿形”),如图3.5所示。光栅线段特有的阶
2016-04-15 11:47:48 3980
原创 计算机图形学(一) 视频显示设备_1_CRT原理
图形系统一般使用视频显示器作为其基本的输出设备。大部分视频监视器的操作是基于标准的 阴极射线管 (cathode-ray tube ,CRT) 设计的,但是也已经出现了其他 一些技术,并且固态监视器终究要占据主导地位 。 图2.2 给出了 CRT 的基本工作原理 。由电子枪发射出的电子束(阴极射线)通过聚焦系统和偏 转系统,射向涂覆有荧光层的屏幕上的指定位置 。在电子束轰击的每个位置,荧 光层都会产生 一个 小亮点。由于荧光层发射的光会很快衰减,因此必须采用某种方法来保持屏幕图像 。
2016-04-07 18:52:37 4985 7
原创 Lua_第25章 调用 C 函数
扩展 Lua 的基本方法之一就是为应用程序注册新的 C 函数到 Lua中去。 当我们提到 Lua 可以调用 C 函数,不是指 Lua 可以调用任何类型的 C 函数(有一些包可以让 Lua 调用任意的 C 函数,但缺乏便捷和健壮性)。正如我们前面所看到的,当C 调用 Lua函数的时候,必须遵循一些简单的协议来传递参数和获取返回结果。相似的, 从Lua 中调用 C 函数,也必须遵循一些协议来传递参数和获得返回结果。另外,从 Lua 调用 C 函数我们必须注册函数,也就是说,我们必须把C 函数的地
2016-04-28 17:53:46 3300
原创 untiy 3d ShaderLab_第3章_Shader(着色器)中用到的各种空间概念
在Unity的脚本中,可以通过transform.worldToLocalMatrix这个矩阵的MultiplyPoint()或者MultiplyVector()方法,把世界坐标表达的矢量转换为为此物体的模型空间表达的矢量。在Shader中,可以通过左乘_World20bject这个矩阵来完成此项任务。剪切空间3.5.1投影
2016-04-28 11:32:06 979
原创 untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_3_Shader的数据接口:属性和 uniform变量
cube属性是3D贴图,是Texture 2D贴图的子类,range属性则是一种限制了范围的float类型,本质和float一样。如果我们在脚本中进行操作的属性在Shader中并不存在,那么Unity只会将此操作忽略,而不会报错。矩阵: 不能在属性块定义的变量。除了Unity的固定管线因为有其特定语法之外,在Properties块中定义的属性必须在代码中再声明一次才能被使用。
2016-04-27 18:54:24 3794
原创 untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_2_Unity中Shader的3种形态
2.2 Unity的ShaderLab所支持的Shader2.3 Unity中Shader的3种形态2.3.1固定管线2.3.2可编程Shader对于面向OpenGL接口的情况,还可以使用#pragma profileoption MaxTexIndirection = 256这样的指令。当编译平台为独立的可执行桌面OpenGL程序时,可以使用#pragma glsl把Cg代码转换为GLSL代码,从而绕过在Shader Model 3.0中的一些指令限制。如果大家熟悉OpenGL接口,也可以使用#pr
2016-04-27 18:48:30 987
原创 untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_1_Unity通过ShaderLab 来组织Shader
真正用于呈现渲染物体的内容是在SubShader中实现的。之所以用SubShader,是为了能让开发者针对不同性能的显卡编写不同的Shader,因为现实中并不是每个人都用相同的显卡。由于显卡千差万别,为了能让用户编写的游戏最大化地在各种各样的GPU上运行,尽可能地呈现最好的效果,就用SubShader来组织具体的实现,使Unity在运行时会针对实际的运行环境,从上到下选出最优的SubShader实现来呈现开发者的作品。从理论上来说,SubShader的数量是没有限制的,但实际操作中为了减少文件的大小,一般写
2016-04-27 18:32:55 701
原创 计算机图形学(二)输出图元_6_OpenGL曲线函数_4_中点椭圆算法(上)
这里的方法类似于显示光栅圆。给定参数rx,ry和(xc,yc),首先确定以原点为中心的标准位置椭圆上的点(x,y),然后将这些点平移到以(xc,yc)为中心的椭圆上。如果希望显示不在标准位置的椭圆,那么就绕中心坐标旋转并对长轴和短轴重新定向。但目前仅考虑显示标准位置的椭圆,第4章将讨论变换对象方向和位置的通用方法。 中点椭圆算法将分成两部分应用于第一象限。图3.25给出了依据rx<ry的椭圆斜率对第一象限进行的划分。并通过在斜率绝对值小于1的区域内在x方向取单位步长,以及在斜率绝对值大于1的区
2016-04-26 18:36:31 3031
原创 Lua_第23章 C API 纵览
Lua是一个嵌入式的语言,意味着 Lua 不仅可以是一个独立运行的程序包也可以是一个用来嵌入其他应用的程序库。你可能觉得奇怪:如果 Lua 不只是独立的程序,为什么到目前为止贯穿整本书我们都是在使用 Lua 独立程序呢? 这个问题的答案在于 Lua 解释器(可执行的 lua)。Lua解释器是一个使用 Lua 标准库实现的独立的解释器,它是一 个很小的应用(总共不超过500 行的代码)。解释器负责程序和使用者的接口:从使用者那里获取文件或者字符串,并传给 Lua 标准库,Lua 标准库负责最终的代码运行。
2016-04-23 18:12:23 1714
原创 计算机图形学(二)输出图元_6_OpenGL曲线函数_3_椭圆生成算法
通过椭圆上任一点到称为椭圆焦点的两个定点的距离可给出椭圆的精确定义:椭圆上任一点到这两点的距离之和都等于一个常数(参见图3.21 )。如果椭圆上的任一点P = (x,y)到两个焦点的距离为d1和d2,那么椭圆的通用方程可以表示为
2016-04-22 15:55:47 2792
原创 计算机图形学(二)输出图元_6_OpenGL曲线函数_2_中点画圆算法
如同光栅画线算法,我们在每个步中以单位间隔取样并确定离指定圆最近的像素位置。对于给定半径r和屏幕中心(xc,yc),可以先使用算法计算圆心在坐标原点(0, 0)的圆的像素位置,然后通过将xc加到x且yc加到y。从而把计算出的每个位置(x,y)移动到其适当的屏幕位置。在第一象限中,圆弧段从x = 0到x = y,曲线的斜率从0变化到-1.0。因此,可以在该八分圆上的正x方向取单位步长,并使用决策参数来确定每一步两个可能的y位置中,哪一个更接近于圆的位置。然后,其他七个八分圆中的位置可由对称性得到。
2016-04-20 15:05:09 3175
原创 计算机图形学(二)输出图元_6_OpenGL曲线函数_1_圆生成算法
生成圆和椭圆等基本曲线的函数并未作为图元功能包含在OpenGL核心库中。但该库包含了显示Bezier样条的功能,该曲线是由一组离散点定义的多项式。OpenGL实用库(GLU)中包含有球面和柱面等三维曲面函数以及生成B样条的函数,它是包含简化Bezier曲线的样条曲线的总集。我们可以使用有理B样条显示圆、椭圆和其他二维曲线。此外,OpenGL实用工具包(GLUT)中还有可以用来显示某些三维曲面(如球面、锥面和其他形体)的函数。然而,所有这些函数比本章中介绍的基本图元应用得更多,因此我们将在第7章进一步讨论这一
2016-04-19 19:25:06 3576 1
原创 计算机图形学(二)输出图元_5_帧缓存值的装载
实现线段和其他对象显示函数的最后一步工作是设定帧缓存的颜色值。由于扫描转换算法以连续的单位间隔生成像素位置,因此扫描转换算法可使用增量方法在每一步高效地存取帧缓存。作为一个特殊的例子,假设帧缓存矩阵是以行为主要顺序进行编址,并且像素位置从屏幕左上方((0,0)变化到屏幕右上方气(xmax,ymax)
2016-04-19 11:59:55 2798
原创 计算机图形学(二)输出图元_4_并行画线算法
而利用并行计算机,则可通过将计算分割到可用的多个处理器中来得到线段的像素位置。分割问题的一种解决方法是将现有的顺序算法放到多个处理器上。我们也可以寻找其他处理办法,从而使像素位置能以并行方式有效地计算。在设计并行算法中,重要的是要考虑平衡可用处理器间的处理负载。 给定np个处理器,我们可以通过把线段分割成np个子段,并在每个子段中同时生成线段而建立起并行的Bresenham画线算法。 上面讨论过的线段生成算法顺序地确定像素位
2016-04-18 16:47:27 3881
原创 计算机图形学(二)输出图元_3_画线算法_3_Bresenham画线算法
Bresenham画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算。另外Bresenham算法还可用于显示圆和其他曲线。图3.8和图3.9给出了绘制线段的屏幕局部。垂直轴表示扫描线位置,水平轴标识像素列。在这个例子中,我们以单位x间隔取样,并且需要确定每次取样时两个可能的像素位置中的哪一个更接近于线路径。从图3.8中的左端点开始,需要确定下一个取样像素位置是(11, 1l)还是(1 1, 12)。类似地,图3.9则给出了像素位置(50,50)为左端点的具有负斜率
2016-04-18 15:12:00 8857 1
原创 计算机图形学(二)输出图元_2_ OpenGL画线函数
图形软件包一般都提供一个描述一条或多条直线段的函数,其中每一直线段由两个端点坐标位置定义。在OpenGL中,和选择一个点位置一样,我们使用glVertex函数选择单个端点的坐标位置。我们使用一对glBegin/g1End来引入一串端点位置。有三个OpenGL符号常量可用于指定如何把这一串端点位置连接成一组直线段。默认情况下,每一符号常量显示白色实线。 使用图元线常量GL_LINES可连接每一对相邻端点而得到一组直线段。通常,这会导致一组未连接的线段,除非重复某些坐标位置。如果只描述了一个端点则
2016-04-15 10:59:43 3929
原创 计算机图形学(二)输出图元_1_OpenGL画点函数
OpenGL中的坐标位置可以有二维、三维或四维。g1Vertex的后缀为2、3或4表示其坐标位置的维数。四维描述意味着齐次坐标(homogeneous-coordinate)表示,其中的齐次参数h(第四维坐标)是笛卡儿坐标值的比例因子。齐次坐标表示对利用矩阵形式表达变换操作很有用,第4章将对其进行详细讨论。由于OpenGL将二维作为三维的特殊情况来处理,任意(x, y)坐标描述等同于h =1时的(x, y, 0) 。
2016-04-14 17:18:21 4139
原创 计算机图形学(二)输出图元
对于每一类场景,要描述每一对象的结构及其在场景中的坐标位置。图形软件包中用来描述各种图形元素的函数称为图形输出原语(graphics output primitive ),或简称为图元(primitive )。描述对象几何要素的输出图元一般称为几何图元。点的定位和直线段是最简单的几何图元。
2016-04-14 16:27:25 1970
原创 OpenGL基础图形编程(十)真实感图形基本概念
由于真实感图形是通过景物表面的颜色和明暗色调来表现景物的几何形状、空间位置以及表面材料的,而一个物体表面所呈现的颜色是由表面向视线方向辐射的光能决定的。在计算机图形学中,常采用一个既能表示光能大小又能表示其颜色组成的物理量即光亮度(luminance)或光强(intensity of light)来描述物体表面朝某方向辐射光能的颜色。采用这个物理量可以正确描述光在物体表面的反射、透射和吸收现象,因而可以正确计算处物体表面在空间给定方向上的光能颜色。
2016-04-13 20:37:15 11564 2
原创 OpenGL基础图形编程(九)OpenGL颜色
几乎所有OpenGL应用目的都是在屏幕窗口内绘制彩色图形,所以颜色在OpenGL编程中占有很重要的地位。这里的颜色与绘画中的颜色概念不一样,它属于RGB颜色空间,只在监视器屏幕上显示。另外,屏幕窗口坐标是以象素为单位,因此组成图形的每个象素都有自己的颜色,而这种颜色值是通过对一系列OpenGL函数命令的处理最终计算出来的。计算机颜色不同于绘画或印刷中的颜色,显示于计算机屏幕上每一个点的颜色都是由监视器内部的电子枪激发的三束不同颜色的光(红、绿、蓝)混合而成,因此,计算机颜色通 常用R(Red)、G(Gree
2016-04-12 14:49:04 6570
原创 计算机图形学(一) 视频显示设备_7_光栅扫描系统
交互式光栅图形系统通常使用几个处理部件。除了中央处理器(CPU)以外,还使用一个视频控制器(video controller)或显示控制器(display controller)来控制显示设备的操作。简单光栅系统的组织结构如图2.24所示。其中,帧缓存可以在系统存储器的任意位置,视频控制器通过访问帧缓存来刷新屏幕。更高级的光栅系统除了使用视频控制器之外,还使用其他处理器作为协处理器和加速器来完成各种图形操作。
2016-04-12 12:06:13 4731
原创 计算机图形学(一) 视频显示设备_6_三维观察设备
显示三维场景的图形监视器的设计,采用了从振动的柔性镜面反射CRT图像的技术。此类系统的操作原理如图2.16所示。当变焦反射镜振动时改变焦距长度。这些振动是同CRT上对象的显示同步的。因此,将该对象上的每一点从镜面反射到空间位置,对应于该点到指定观察位置的距离。这样就允许我们围绕着一个对象或场景行走,并从不同的角度进行观察。 图2.17给出了Genisco SpaceGraph系统,它采用振动镜将三维对象投影进25 cm x 25 cm x 25 cm空间。这个系统也能显示选定对一象在不同深度横截面的
2016-04-12 10:55:06 1588
原创 OpenGL基础图形编程(八)变换
OpenGL变换是本篇的重点内容,它包括计算机图形学中最基本的三维变换,即几何变换、投影变换、裁剪变换、视口变换,以及针对OpenGL的特殊变换概念理解和用法,如相机模拟、矩阵堆栈等。学好了这章,才开始真正走进三维世界。实际上,从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤 (括号内表示的是相应的图形学概念): 第一步,将相机置于三角架上,让它对准三维景物(视点变换,Viewing Transformation)。 第二步,将三维物体放在适当的位置(模型变换,Modeling
2016-04-11 16:36:06 5637
原创 OpenGL基础图形编程(七)建模
OpenGL基本库提供了大量绘制各种类型图元的方法,辅助库也提供了不少描述复杂三维图形的函数。这一章主要介绍基本图元,如点、线、多边形,有了这些图元,就可以建立比较复杂的模型了。7.1、描述图元 OpenGL是三维图形的函数库,它所定义的点、线、多边形等图元与一般的定义不太一样,存在一定的差别。对编程者来说,能否理解二者之间的差别十分重要。一种差别源于基于计算机计算的限制。
2016-04-11 16:11:30 5318
原创 OpenGL基础图形编程(六)OpenGL辅组库的基本使用
OpenGL是一个开放的系统,它是独立于任何窗口系统或操作系统的。尽管它包含了许多图形函数,但它却没有窗口函数,也没有从键盘和鼠标读取事件的函数,所以要初学者写出一个完整的图形程序是相当困难的。另外,OpenGL图形函数中只提供基本的几何原形:点、线、多边形,因此要创建基本的三维几何体如球、锥体等,也很不容易。而OpenGL辅助库就是为解决这些基本问题专门设计的,它提供了一些基本的窗口管理函数和三维图形绘制函数,能帮助初学者尽快进入OpenGL世界,掌握关键的三维图形技术,体会其中奇妙的乐趣。但是,对于复杂
2016-04-09 17:24:05 4681
原创 计算机图形学(一) 视频显示设备_5_平板显示器
我们可以把平板显示器分为两类:发射显示器(emissive display)和非发射显示器(nonemissive display )。发射显示器是将电能转换为光能的设备。等离子体显示板、薄膜光电显示器以及发光二极管都是发射显示器的实例。平板CRT也已发明出来,其中的电子束以平行于屏幕的方向加速,然后偏转90轰击屏幕。但是,还未证实平板CRT同其他发射设备一样可以实际应用。非发射显示器利用光学效应将太阳光或来自某些其他光源的光转换为图形模式。液晶设备是非发射平板显示器的最重要的例子。
2016-04-09 12:18:09 2415
原创 计算机图形学(一) 视频显示设备_4_彩色CRT监视器
CRT监视器利用能发射不同颜色光的荧光层的组合来显示彩色图形。不同荧光层的发射光组合起来,可以生成一种按其比例而定的可见颜色。显示彩色图形的一种方法是在屏幕上涂上多层不同的荧光粉。发射颜色由电子束在荧光层中的穿透深度决定。这种方法称为电子束穿透法(beam-penetration ),它常用于红、绿两层结构。 荫罩法(shadow-mask ) 常用于光栅扫描系统(包括彩色电视机),因为它能产生的彩色范围比电子束穿透法大得多。这种方法基于我们熟悉的由红、绿、蓝三原色来组合颜色的原理,称为RGB
2016-04-09 11:59:51 2332
原创 计算机图形学(一) 视频显示设备_3_随机扫描显示器
当CRT用于随机扫描显示器(random-scan display)时,其电子束只在屏幕上显示图形的部分移动。电子束逐条地跟踪图形的组成线条,从而生成线条图。因此,随机扫描显示器也称为向量显示器(vector display)、笔划显示器(stroke-writing display)或笔迹显示器(calligraphic display)。图形的组成线条随机扫描系统按任意指定的顺序绘制并刷新(参见图2.9)。笔式绘图仪也以类似的方式工作,它是随机扫描、硬拷贝设备的一个例子。
2016-04-08 11:40:08 2387
原创 计算机图形学(一) 视频显示设备_2_光栅扫描显示器
使用CRT的普通图形监视器是基于电视技术的光栅扫描显示器(raster-scan display )。在光栅描系统中,电子束横向扫描屏幕,一次一行,从顶到底依次进行。每一行称为一个扫描行(scanline )。当电子束横向沿每一行移动时,电子束的强度不断变化,从而建立亮点组成的一个图案。图形定义保存在称为刷新缓存(refresh buffer)或帧缓存(frame buffer)的存储器中,这里的帧(frame)是指整个屏幕范围。该存储器保存一组对应屏幕所有点的强度值。电子束在屏幕上逐点移动时由从刷新缓存取
2016-04-08 10:53:22 4500
原创 Lua协同程序
协同程序是协同的性质,可以把两个或更多的方法以可控制的方式执行。随着协同程序,在任何给定的时间,只有其协同程序运行之一,这在运行协同程序只能暂停其执行时,明确要求暂停。 上述定义可能看起来模糊。来告诉它更清楚,假设我们有两个方法,一个主程序方法和协同程序。当我们使用恢复功能调用协程,其开始执行,当我们调用yield功能,暂停执行。再次同协程可以继续从它被暂停的另一个恢复功能调用执行。这个过程可以继续,直到执行了协程的结束。
2016-04-07 11:19:58 1094
原创 OpenGL基础图形编程(五)
五、OpenGL的数据类型和函数名 OpenGL的数据类型定义可以与其它语言一致,但建议在ANSI C下最好使用以下定义的数据类型,例如GLint、GLfloat等。具体类型见表5-1。表5-1 命令前缀和参数数据类型前缀 数据类型相应C语言类型 OpenGL类型 b 8-bit integer signed charG
2016-04-06 16:15:44 1250
原创 OpenGL基础图形编程(四)基础程序结构
用OpenGL编写的程序结构类似于用其他语言编写的程序。实际上,OpenGL是一个丰富的三维图形函数库,编写OpenGL程序并非难事,只需在基本C语言中调用这些函数,用法同Turbo C、Microsoft C等类似,但也有许多不同之处。
2016-04-06 16:03:31 1646
原创 Lua_第22章 Debug 库
debug 库并不给你一个可用的Lua调试器,而是给你提供一些为 Lua 写一个调试器 的方便。出于性能方面的考虑,关于这方面官方的接口是通过 C API 实现的。Lua 中的 debug 库就是一种在 Lua 代码中直接访问这些 C 函数的方法。Debug 库在一个 debug 表 内声明了他所有的函数。22.1自省(Introspective)22.1.1访问局部变量 22.1.2访问 Upvalues 22.2Hooks 22.3 Profiles
2016-04-06 15:51:38 922
第一人称射击游戏(Unity)
2015-09-17
Unity_模仿击打铝罐代码
2015-09-17
图片控件ImageView
2014-12-08
羽哥Time And DatePicker
2014-12-08
RadioButtonAndCheckboxDemo
2014-12-08
universal-image-loader-1.8.6-with-sources.jar
2014-12-05
android-support-v4.jar
2014-12-05
羽哥位移的血轮眼
2014-12-05
羽哥android动画-旋转+透明的血轮眼
2014-12-05
羽哥TabHostDemo
2014-12-02
羽哥RatingBarDemo
2014-12-01
羽哥SeekBarDemo
2014-12-01
羽哥SpinnerDemo
2014-12-01
微信飞机大战
2014-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人