摘要: 最近开始学习OpenGL,网上的教程太散乱,于是打算照着红宝书《OpenGL编程指南(第七版)》来学习。于是在Mac上搭建一下Demo环境。比较方便的是,OS X上已经装了OpenGL 3.x所以非常简单。首先,在xcode上建立os x的command line工程,即hello world。然后,把以下两个库通过add files添加到工程里:/System/Library/Frameworks/OpenGL.framework/System/Library/Frameworks/GLUT.framework前者就是OpenGL 3.x;后者是OpenGL的界面和交互库,因为OpenGL只 阅读全文
posted @ 2014-02-17 20:51 GAMTEQ 阅读(539) 评论(0) 推荐(0) 编辑
摘要: select,poll,epoll简介selectselect本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1 单个进程可监视的fd数量被限制2 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大3 对socket进行扫描时是线性扫描pollpoll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态,如果设备就绪则在设备等待队列中加入一项并继续遍历,如果遍历完所有fd后没有发现就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒后它又要再次遍历fd。这个过程经历了 阅读全文
posted @ 2014-02-12 16:54 GAMTEQ 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 基本概念基本功能:几何图形、变换、着色、光照、贴图高级功能:曲面图元、光栅操作、景深、shader编程状态机先设置状态参数:多边形、顶点列表、填充颜色、纹理、混合模式、坐标系再调用绘图指令如果没有设置新参数,会一直用当前的状态来绘图,所以是有状态的OpenGL可以分为客户端和服务端,客户端可以是cpu或主机,服务端是gpu或另一台主机客户端发送绘图指令,服务端负责绘制渲染,尽量在客户端完成工作,只发送必要数据到服务端,减少传输压力开启/关闭绘图特性GL_APICALL void GL_APIENTRY glEnable(GLenum cap); // 开启一个状态GL_APICALL void 阅读全文
posted @ 2014-02-09 18:06 GAMTEQ 阅读(685) 评论(0) 推荐(0) 编辑
摘要: 开始为游戏增加Lua脚本支持,今天主要配置了一下开发环境:cocos2d-x 2.2.1,xcode5。1. 创建cocos2d-x-lua项目类似于创建C++项目,用以下命令即可:python create_project.py -project Lua1-package com.GAMTEQ.Lua1-language lua这样创建出的项目,主要是为了让lua调用C++,即以Lua脚本来启动游戏。2. 为项目增加Lua支持由于我的游戏以前没有Lua支持,所以不能用上述命令。解决方法很简单,把$MYDIR/cocos2d-x-2.2.1/scripting/lua目录add到xcode的项 阅读全文
posted @ 2014-01-28 00:22 GAMTEQ 阅读(1864) 评论(1) 推荐(0) 编辑
摘要: 原文链接:http://blog.csdn.net/u012945598/article/details/17168831在使用Lua写脚本的时候大家都会因为没有代码提示导致敲代码的效率有所下降。笔者今天一直在找Lua的编辑器,最后综合代码提示、纠错、以及界面美观性、可操作性等原因,选择了Sublime Text。关于编码环境的基本搭建过程,笔者给大家推荐一篇博客:http://blog.sina.com.cn/s/blog_991afe570101rdgf.html。绿色背景内的内容是从该博客中拷贝出来的,为了适应新的版本,笔者做了一些修改,所保留内容均是笔者刚刚测试过的内容。First:下 阅读全文
posted @ 2014-01-27 18:31 GAMTEQ 阅读(1221) 评论(0) 推荐(0) 编辑
摘要: 1. 拖动地图1.1 地图移动原理地图tiledMap是CCLayer的child,把tiledMap的锚点设置成(0.5,0.5),然后setPosition到VisibleSize的中心,那么地图的中心就和屏幕的中心重合了。拖动地图的原理是,移动tiledMap精灵的position,即实质是地图在移动,而看起来好像屏幕在移动。1.2 得到划动向量在ccTouchesBegan确定起始触摸点,然后在ccTouchesMoved确定触摸终止点,得到向量vec即划动屏幕时的一个短时段内的划动向量。把这个划动向量加到tiledMap的getPosition上,即可划动地图。该向量的正负和因子(比 阅读全文
posted @ 2014-01-26 23:22 GAMTEQ 阅读(1048) 评论(0) 推荐(0) 编辑
摘要: 最近一直在做45度斜视角游戏,也就是isometric等容地图,俗称2.5D。地图上物体的前后遮挡是我遇到的第一个问题,总结一下处理方法。遮挡问题(不知道术语),就是比如一个角色站在树后面,那么树要遮挡住角色的一部分,我是用实时修改zorder实现的。1. 制作地图用Tiled制作45度地图时,物体如何放在地图上有2种方法:1.1 标记法:在地图对象层上标记出对象,并且指定该对象的类型。游戏加载地图时,遍历所有的对象,根据其类型,生成不同的精灵:主角、NPC、城墙、建筑等。生成的时候把zorder设置成该精灵所在的瓦块坐标的x分量和y分量之和。比如城墙在(10,20)这个瓦块上,那么其zord 阅读全文
posted @ 2014-01-26 22:42 GAMTEQ 阅读(3482) 评论(0) 推荐(0) 编辑
摘要: 昨天测试“角色被遮挡部分透明显示”功能时,发现角色死亡后,其轮廓精灵不会消失。调试发现,角色在死亡时,其引用计数retain_count居然是9。这是由引用计数混乱引起的内存泄露。加了很多日志跟踪retain_count,又通过调试,终于确定了问题,是我错误使用CCCallFuncN这个CCAction导致的。于是查看cocos2d-x2.2.1源代码了解这个类的实现原理。CCCallFuncN是CCAction的子类,是函数回调动作。我在游戏中用这个类来实现“角色死亡后倒地4秒渐渐消失再删除精灵”功能。PathFinder::_deadAction = CCSequence::createW 阅读全文
posted @ 2014-01-26 21:10 GAMTEQ 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 把小游戏的代码和博客迁移到GitHub上,路径是:https://github.com/GAMTEQ,欢迎访问以下是使用GITHUB的一些命令504 cd code 506 mkdir FaithHero 508 cd FaithHero 510 git init// 拷贝文件到这个目录下,可以包含文件夹 515 git add * 517 git commit -m 'first commit' 518 ls -a 519 pwd 520 git remote add originhttps://github.com/GAMTEQ/FaithHero/FaithHero.gi 阅读全文
posted @ 2014-01-26 21:01 GAMTEQ 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 这几天看了libpomelo的cocos2dx客户端这是个聊天室,由2个场景构成,登录场景LoginScene,聊天场景ChatScene。一. LoginScene客户端是以Login场景来启动的Login场景初始化时先构造各种控件比如文本框,然后为登录按钮绑定登录回调创建menu及其回调CCMenuItemLabel *pMenuItem = CCMenuItemLabel::create(label, this, menu_selector(Login::onLogin));CCMenu *pMenu = CCMenu::create(pMenuItem, NULL);pMenu-> 阅读全文
posted @ 2014-01-26 20:56 GAMTEQ 阅读(990) 评论(0) 推荐(0) 编辑