2013年12月24日
摘要: 前几天园子里有人发表关于8皇后的算法.只有代码,没有能运行的DEMO多枯燥.于是我这两天抽时间写了个N皇后的屏保程序.程序启动后会从4皇后到14皇后显示其所有排列,每隔0.5秒自动切换一次.按下空格键会停止自动切换,按-=键可以手动切换排列.算法是对网上找的程序做了点修改,先申请一块8M的内存区域,将N皇后中所有合适的位置保存到该内存中,代码如下: 1 static Ybyte g_listQueen[YD_MAX_STACKS_NUM] = {0}; 2 3 bool check_pos_valid(Ybyte loop, Ybyte value) 4 { 5 Yby... 阅读全文
posted @ 2013-12-24 20:29 叶飞影 阅读(1877) 评论(4) 推荐(2) 编辑
  2013年12月20日
摘要: 我所遭遇过的游戏中间件---Redux一.关于Redux Substance Redux 是一款纹理处理软件加中间件,专门用于纹理生成和压缩。具其用户指南介绍,它能够对纹理集进行优化,可以将现有压缩算法的性能提高50%或更多。其压缩方式可是无损压缩,也可以是无损压缩。压缩时可以由用户自定义压缩比和图像质量。 Redux可以针对批量纹理文件进行压缩打包。操作流程是新建一个Project项目,为该项目导入若干个纹理文件,可以设置每一个纹理的压缩参数。最后导出压缩文件。Redux可以对多种格式的图像文件进行压缩。如果输入图像的长宽不为2的N次幂,Redux会自动将其拉伸至2的N次幂。ReduxSDK 阅读全文
posted @ 2013-12-20 19:30 叶飞影 阅读(1725) 评论(0) 推荐(0) 编辑
  2013年12月14日
摘要: 一个彩色盘子的屏保 记得小时候在电视上看过一个科普节目,由多个颜色组成的盘子,如果快速旋转起来,会看上去是白色的.于是我就写了这个屏保程序,但发现在计算机上模拟并不是这样的."RollPlate.scr"全屏可执行程序"RollPlate.exe"窗口可执行程序鼠标左键右键拖动,调节视角.鼠标滚轮,调节摄像机的远近.X,恢复为默认视角并停止视角旋转.空格,暂停与恢复.ESC,退出.R,重新开始.[,] 加减盘子旋转的速度-,= 加减盘子的颜色数目,最小是3,最大是720,默认为180盘子的旋转速度每隔一秒会变化一下.屏保设置方式XP:将目录下的所有文件拷 阅读全文
posted @ 2013-12-14 14:56 叶飞影 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 我所遭遇过的游戏中间件--Apex Apex是PhysX的扩展中间件,它是在PhysX的基础上封装了一层.用于实现布料,粒子,破碎这三种物理效果.我只研究其布料处理.使用Apex做物理最大的好处是:它的布料可以即受物理影响,又受骨骼蒙皮的影响.物理布料有很大的不确定性,你无法知道在做了一套动作后,布料的模拟还是否正常.然而有了骨骼蒙皮的影响,就给布料带来确定性.在PhysX的Max导出插件中,美工可以设置布料上每一个顶点受物理影响的范围.运算过程应该是先对布料上的点做骨骼蒙皮运算,再做物理模拟. Apex是我碰到过的接口最难搞的中间件,它里面使用了大量的回调,接口十分晦涩难懂,官方文档也不够. 阅读全文
posted @ 2013-12-14 14:26 叶飞影 阅读(2130) 评论(1) 推荐(3) 编辑
摘要: 我所遭遇过的游戏中间件--PhysX PhysX现在是Nvidia的物理中间件.其特点是简练且功能强大.当我最初拿到PHYSX的SDK时,就发现这个物理中间件比Havok要小很多,但该有的功能都有,甚至有软体softbody,这是Havok没有的功能.而后我便从Havok的坑跳到了PhysX的坑里.下面将我在PhysX里碰到的坑一一讲述下.(1)Max导出插件 PhysX的Max导出插件做的不如Havok,最缺少的功能是无法对导出的模型进行矩阵变换.要知道Max的坐标系为Z轴向上右手坐标系,而游戏中的坐标系为Y轴向上的左手坐标系.并且,我这的美术在Max中建模时,会将模型放大100倍.那么导出 阅读全文
posted @ 2013-12-14 08:07 叶飞影 阅读(2230) 评论(1) 推荐(2) 编辑
  2013年12月13日
摘要: 我所遭遇过的中间件--VTK Vtk是我接触的第一款软件开发包,它引导我对图形学的入门.我是先学的VTK,后学的OpenGL和D3D.VTK是专为图形学开发,特点是接口清晰,好上手,又含有大量的图像处理算法.从VTK入手3D图形学,要比从OpenGL和D3D容易的多. 最初接触VTK是研一那年暑假,研一时我做医学图像处理.VTK很适合由图像处理转到3D图形学,对做医学图像也很方便.它集成着DICOM图像文件格式的解析器.我看过解析DICOM文件的代码,大约5000多行.这代码量对当时的我来说如同天文数字,而使用VTK,几行代码就可以搞定.这就是中间件的方便之处,为开发者提供成熟的功能.我用V. 阅读全文
posted @ 2013-12-13 19:06 叶飞影 阅读(2809) 评论(3) 推荐(6) 编辑
  2013年12月11日
摘要: 我所遭遇过的游戏中间件--Havok Havok是我接触的第一款游戏中间件,那是在五,六年前,我刚刚毕业,对游戏开发还是个菜鸟.我记得先是对游戏场景中的地形和其他静态物体生成刚体,然后做角色的Ragdoll就是模拟人死之后顺着地形躺下,然后又做车辆模拟,后来还做过破碎.下面先一一枚举下我做的事情: (1)地形刚体是每次场景加载时实时生成的. (2)场景中的所有静态物体生成一个巨大的组合刚体,每一个静态物体都是刚体的一个Shape,然后将该刚体保存到文件中. (3)创建出一堵刚体所组成的墙.然后可以用物体砸它. (4)Ragdoll搞的很辛苦,因为当时我还不太了解骨骼动画,还没吃透游戏引擎中.. 阅读全文
posted @ 2013-12-11 16:20 叶飞影 阅读(2275) 评论(3) 推荐(1) 编辑
  2013年12月10日
摘要: 818这些年我所遭遇过的游戏中间件 生活中总有些之前从没想过的东西,却出现在自己以后的生活中.比如,上中学时我从没想过自己能上大学.在学校时多次路过一家公司,看它的大楼很是个性,从没想过自己毕业后会坑在这家公司.第一次听说中间件,是我读研时的一个舍友,他的研究方向就是中间件.我问他什么是中间件,他... 阅读全文
posted @ 2013-12-10 12:15 叶飞影 阅读(2457) 评论(8) 推荐(3) 编辑
  2013年12月9日
摘要: 本文将讨论以下问题:(1)Windows可执行程序会从哪些目录下加载DLL.(2)如何将可执行使用的DLL放置到统一的目录下,而不是与EXE同一目录.(3)可执行程序加载了不该加载的DLL.(4)Win7,Win8下,"\Windows\System32"中的可执行程序无法加载DLL.(1)当启动一个可执行程序时,如果该程序需要加载其他DLL,那么当DLL的路径不是完整路径时,会先从当前目录下查找,找不到会再搜索系统目录,还是找不到的话,则依次搜索环境变量path的目录.这个顺序很重要.我自己系统的默认环境变量path的目录如下:C:\Program Files (x86) 阅读全文
posted @ 2013-12-09 16:38 叶飞影 阅读(2966) 评论(3) 推荐(1) 编辑
  2013年12月8日
摘要: 一个三维魔方的屏保软件,可支持2级到72级的魔方.启动后魔方会自动旋转,并最终回到初始状态.有很多人问我这是怎么做到的,用的什么解魔方的算法,其实我自己根本就不会玩魔方,别人用技巧解魔方,我这程序中用的是记忆.将魔方正着旋转若干次,再反过来转就自动回到初始了. 魔方实现是对共6个面的每个方片做矩阵变化,这里不是方块,而是方片.每个方片有其自己的矩阵变化,每次旋转,先通过区域选定需要旋转的方片集合,然后对这些方片做旋转90度的变换.2级魔方72级魔方:双击"MagicCubeSP.scr"可运行全屏程序MagicCube.exe为窗口程序.由于程序为一个屏保,所以启动后,点击 阅读全文
posted @ 2013-12-08 08:16 叶飞影 阅读(1298) 评论(3) 推荐(2) 编辑
  2013年12月6日
摘要: 学过程序的人一定记得汉诺塔.我们学的第一个程序是HelloWorld,而碰到的第一个坑就是汉诺塔,短短十几行代码,不知花费了多少时间精力去理解.我记得当年的开发环境还是蓝屏的,汉诺塔程序的输出还是一行行枯燥无趣的字符串.现在重写了这个程序,以三维可视化的方式看下汉诺塔的运行过程. 1 void hanoi(char src, char mid, char dst, Yuint stacks, Ychar* pMoveSteps, Yuint& index) 2 { 3 if (stacks == 1) 4 { 5 Ychar& value = pMoveSt... 阅读全文
posted @ 2013-12-06 11:34 叶飞影 阅读(2714) 评论(5) 推荐(6) 编辑
  2013年12月3日
摘要: 工具功能:批量处理C++代码文件,将C++代码文件名中大写字母改为下划线+小写字母。为了方便代码在不同平台下的移植,代码文件命名规范为:不使用大写字母,单词之间用下划线间隔开。为此写了这个小工具,将文件夹拖入界面即可处理。形如代码:#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"#include "BulletDynamics/Dynamics/btSimpleDynamicsWorld.h"#include "BulletDynamics/Dynamics/btRigid 阅读全文
posted @ 2013-12-03 13:45 叶飞影 阅读(533) 评论(0) 推荐(0) 编辑
  2013年12月2日
摘要: 很多年前整理的,像素处理的宏定义,包括r8g8b8到r5g6b5之间的相互转化,浮点数像素与整数值之间的相互转化,像素值的插值、取反等处理。具体没什么好说的,宏定义的代码还是很容易看的。这套东西对搞图像处理的来说非常有意义。 1 /**************************************************************** 2 3 File name : WhyColorDefines.h 4 Author : 叶飞影 5 Version : 2.0 6 Create Date : 2010/08... 阅读全文
posted @ 2013-12-02 16:29 叶飞影 阅读(1082) 评论(1) 推荐(1) 编辑
  2013年11月23日
摘要: 从9月份开始写三个月内总共实现了13个游戏,5个屏保程序,5个DEMO程序.如果运行时,报有木马病毒什么的,请相信我,这绝对是杀毒软件的误报,自己写的程序由于没有得到杀毒软件的认证,被报有危险是正常的.而且我也没有写木马病毒的道行. 自己的引擎尚未完善,所有的游戏都是不需要纹理,不需要资源的小游戏.目前先告一段落,毕竟这只是业余搞的,我下一步工作将做移动平台开发.一,游戏(1)HelloColor(2)打方块(3)弹球敲方块(4)俄罗斯方块(5)滚弹躲方块(6)滚弹围方块(7)极速躲方块(8)极速切方块(9)连泡泡(10)魔方(11)切方块(12)贪吃虫(13)贪吃蛇二,屏保程序(1)Lin. 阅读全文
posted @ 2013-11-23 06:58 叶飞影 阅读(2564) 评论(10) 推荐(4) 编辑
  2013年11月21日
摘要: 前几天写的游戏"弹球敲方块"和"打方块"中需要按照字母来生成方块的组合.一开始想从网上找到这样的数据,却没有找到,只好自己写.10个数字和26个英文大写字母.小写字母的没有实现,希望有人能给我补充上. 1 bool g_char_null[64] = 2 { 3 0,0,0,0,0,0,0,0, 4 0,0,0,0,0,0,0,0, 5 0,0,0,0,0,0,0,0, 6 0,0,0,0,0,0,0,0, 7 0,0,0,0,0,0,0,0, 8 0,0,0,0,0,0,0,0, 9 0,0,0,0,0,0,0,0... 阅读全文
posted @ 2013-11-21 21:42 叶飞影 阅读(1034) 评论(1) 推荐(1) 编辑