2019年1月3日

[置顶] c++对象模型

摘要:关于对象 加上封装后的布局成本 c语言中如下声明一个结构体 struct point3d 转化为class Point3d之后 封装带来的布局成本增加了多少?实际是没有增加布局成本的。3个数据成员直接在class object内,member function在classs声明却不出现在class 阅读全文

posted @ 2019-01-03 16:18 bytemode 阅读 (10) 评论 (0) 编辑

2019年1月4日

opengl摄像机

摘要:摄像机/观察空间 当我们讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机,我们需要它在世界空间中的位置、观察的方向、一个指向它右测的向量以及一个 阅读全文

posted @ 2019-01-04 16:53 bytemode 阅读 (133) 评论 (0) 编辑

opengl坐标系统

摘要:概述 为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界 阅读全文

posted @ 2019-01-04 16:19 bytemode 阅读 (35) 评论 (0) 编辑

opengl绘制三角形

摘要:顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO 渲染管线 在OpenGL中,任何事物都在3D空间中,而屏幕和 阅读全文

posted @ 2019-01-04 11:42 bytemode 阅读 (691) 评论 (0) 编辑

opengl纹理

摘要:关于纹理 可以为每个顶点添加颜色来增加图形的细节,从而创建出丰富的图像。想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销.纹理是一个2D图片,它可以用来添加物体的细节,这样就可以让物体非常精细而不用指定额外的顶点。 为了能够把纹理映射(Map)到三角形上, 阅读全文

posted @ 2019-01-04 11:41 bytemode 阅读 (347) 评论 (0) 编辑

opengl基础

摘要:opengl opengl是一个由 "Khronos组织" 制定并维护的规范(Specification) 。是一系列的图形软件编程接口,和gdi类似。opengl有很多封装的库最有名的GLFW库。接下来很多东西以GLFW 为例子来说明一些api的使用问题,但这并不影响opengl本身的逻辑表述。 阅读全文

posted @ 2019-01-04 11:40 bytemode 阅读 (58) 评论 (0) 编辑

opengl矩阵向量

摘要:如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间。我们现在有一个更好的解决方案,使用(多个)矩阵(Matrix)对象可以更好的变换(Transf 阅读全文

posted @ 2019-01-04 11:38 bytemode 阅读 (141) 评论 (0) 编辑

2019年1月3日

opengl-glsl

摘要:GLSL 着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。 着色器的开头总是要声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变 阅读全文

posted @ 2019-01-03 17:14 bytemode 阅读 (129) 评论 (0) 编辑

c++对象模型

摘要:关于对象 加上封装后的布局成本 c语言中如下声明一个结构体 struct point3d 转化为class Point3d之后 封装带来的布局成本增加了多少?实际是没有增加布局成本的。3个数据成员直接在class object内,member function在classs声明却不出现在class 阅读全文

posted @ 2019-01-03 16:18 bytemode 阅读 (10) 评论 (0) 编辑

2018年12月17日

cocos2dx渲染架构

摘要:2dx的时代UI树便利和渲染是没有分开的,遍历UI树的时候就渲染.3dx版本为了分离了ui树的遍历和渲染,先遍历生成渲染命令发到渲染队列,之后遍历渲染命令队列开始渲染.这样做的好处是渲染命令可以重用,单独的渲染可以做优化例如自动批绘制.本篇首先介绍cocos2D X 3.x版本的渲染结构,之后会深入 阅读全文

posted @ 2018-12-17 22:05 bytemode 阅读 (140) 评论 (0) 编辑

2018年12月15日

lua闭包

摘要:lua中有两种闭包, c闭包和lua闭包 两种闭包的公共部分: C闭包的结构 结构比较简单, f是一个满足 int lua_func(lua_State ) 类型的c函数 upvalue是创建C闭包时压入的upvalue, 类型是TValue, 可以得知, upvalue可以是任意的lua类型 Lu 阅读全文

posted @ 2018-12-15 22:00 bytemode 阅读 (50) 评论 (0) 编辑

lua模块注册

摘要:Lua自带的模块并不多,好处就是Lua足够的小,毕竟它的设计目标是定位成一个嵌入式的轻量级语言的. 相关的函数index2adr 一个Lua函数栈由两个指针base和top来指定,base指向函数栈底,top则指向栈顶. 回到index2addr函数中,几种情况: 1. 如果索引为正,则从函数栈底为 阅读全文

posted @ 2018-12-15 18:43 bytemode 阅读 (29) 评论 (0) 编辑

lua协程实现

摘要:协程是个很好的东西,它能做的事情与线程相似,区别在于:协程是使用者可控的,有API给使用者来暂停和继续执行,而线程由操作系统内核控制;另外,协程也更加轻量级。这样,在遇到某些可能阻塞的操作时,可以使用暂停协程让出CPU;而当条件满足时,可以继续执行这个协程。目前在网络服务器领域,使用Lua协程最好的 阅读全文

posted @ 2018-12-15 18:16 bytemode 阅读 (49) 评论 (0) 编辑

lua表类型

摘要:Lua的表的定义: typedef struct Table { CommonHeader; lu_byte flags; lu_byte lsizenode; / log2 of size of `node' array / struct Table metatable; TValue array 阅读全文

posted @ 2018-12-15 17:39 bytemode 阅读 (35) 评论 (0) 编辑

lua字符串类型

摘要:Lua中字符串结构体的定义是: 这里TString结构体是一个union, 最开始的L_Umaxalign dummy;起到的是对齐作用.紧跟着是CommonHeader,可以看出TString也是可GC数据类型的一种. 在Lua中,字符串是一个保存在一个全局的地方,在globale_state的s 阅读全文

posted @ 2018-12-15 17:29 bytemode 阅读 (209) 评论 (0) 编辑

lua通用数据类型

摘要:TValue结构 TValue这个结构体是Lua的通用结构体,,Lua中的所有的数据都可以使用这个结构体来表示.很容易想到,在面向对象中,这个结构体是一个基类,派生出来的都是其他的子类. TValue结构体内部有几个宏, 展开之后就是这样的: 这个结构体定义,总体来说分为两个部分:tt存放的数据类型 阅读全文

posted @ 2018-12-15 17:18 bytemode 阅读 (307) 评论 (0) 编辑

lua栈

摘要:既然Lua虚拟机模拟的是CPU的运作,那么Lua栈模拟的就是内存的角色.在Lua内部,参数的传递是通过Lua栈,同时Lua与C等外部进行交互的时候也是使用的栈.,先关注的是Lua栈的分配,管理和相关的数据结构. lua虚拟机在初始化创建lua_State结构体时,会走到stack_init函数中,这 阅读全文

posted @ 2018-12-15 14:53 bytemode 阅读 (51) 评论 (0) 编辑

lua函数定义

摘要:FuncState proto结构数组保存函数原型信息;prev保存父函数体指针;actvar保存定义的局部变量;upvalues保存upvalue Lua源码中,专门有一个结构体FuncState用来保存函数相关的信息.其实,即使没有创建任何函数,对于Lua而言也有一个最外层的FuncState数 阅读全文

posted @ 2018-12-15 14:32 bytemode 阅读 (260) 评论 (0) 编辑

lua虚拟机概述

摘要:何为虚拟机 用于模拟计算机运行的程序.是个中间层,它处于脚本语言和硬件之间的一个程序.每一门脚本语言都会有自己定义的opcode(”操作码”),可以理解为这门程序自己定义的”汇编语言”.一般的编译型语言,比如C等,经过编译器编译之后生成的都是与当前硬件环境相匹配的汇编代码;而脚本型的语言,经过前端的 阅读全文

posted @ 2018-12-15 14:06 bytemode 阅读 (251) 评论 (0) 编辑

2018年12月12日

cocos2dx内存优化

摘要:纹理消耗了大量内存 在大部分情况下,是纹理(textures)消耗了游戏程序大量的内存。因此,纹理是我们首要考虑优化的对象 纹理加载 cocos2d里面纹理加载分为两个阶段:从图片文件中创建一个Image对象;以这个创建好的Image对象来创建Texture2D对象.加载纹理的文件io操作和纹理创建 阅读全文

posted @ 2018-12-12 10:50 bytemode 阅读 (109) 评论 (0) 编辑

导航

统计