用OpenGL实现射线拣取对象程序设计(转)
用OpenGL实现射线拣取对象程序设计(转)[@more@] 关于用射线原理来拣取对象网上已经有完整的理论,另外DirectX也提供了一个Pick例子来演示,在这里我将这些资料和理论来稍微的总结,并给出OpenGL下的完整实现。 相关的理论大体来自一篇英文资料和一篇总结性的中文资料,分别是: http://www.gameres.com/Articles/Program/Visual/3D/pick_2004_529.htm http://www.mvps.org/directx/articles/rayproj.htm 前一篇完整讲述用DirectX实现射线拣取物体的原理和实现。后一篇讲述的是二维屏幕空间到三维世界空间的转换原理。前一篇
游戏开发新手入门之DirectX入门(转)
游戏开发新手入门之DirectX入门(转)[@more@] ☆ 简介 今天我们要接触到令人敬畏的DirectX。它比Windows GDI要快好几倍,可用于不同的语言和多种平台,支持从绘制象素到高级3D图象,从播放简单声音到数字音乐,从键盘控制到反震手柄……它给你游戏编程所需的一切(有点夸张)。当然了,它是巨大的,需要好几本书才能含盖它的全部。先不要去担心我在这里所教给你之外的数不清的知识,毕竟我把你推到了起跑线上。 阅读本章,你需要前几章的知识和C语言的知识,由于我们还要谈到组件对象模型(COM),它是面向对象系统的基础,你
通过例子学习Lua(2)---Lua流程控制(转)
通过例子学习Lua(2)---Lua流程控制(转)[@more@] 1. 函数的使用 以下程序演示了如何在Lua中使用函数, 及局部变量 例e02.lua -- functions function pythagorean(a, b) local c2 = a^2 + b^2 return sqrt(c2) end print(pythagorean(3,4)) 运行结果 5 程序说明 在Lua中函数的定义格式为: function 函数名(参数) ... end 与Pascal语言不同, end不需要与begin配对, 只需要在函数结束后打个end就可以了. 本例函数的作用是已知直角三角形直角边, 求斜边长度. 参数a,b分别表示直角
通过例子学习Lua(3)----Lua数据结构(转)
通过例子学习Lua(3)----Lua数据结构(转)[@more@] 1.简介 Lua语言只有一种基本数据结构, 那就是table, 所有其他数据结构如数组啦, 类啦, 都可以由table实现. 2.table的下标 例e05.lua -- Arrays myData = {} myData[0] = “foo” myData[1] = 42 -- Hash tables myData[“bar”] = “baz” -- Iterate through the -- structure for key, value in myData do print(key .. “=“ .. value) end 输出结果 0=foo 1=42 bar=baz 程序说明 首先定义了一
通过例子学习Lua(4)--函数的调用(转)
通过例子学习Lua(4)--函数的调用(转)[@more@] 1.不定参数 例e07.lua -- Functions can take a -- variable number of -- arguments. function funky_print (...) for i=1, arg.n do print("FuNkY: " .. arg[i]) end end funky_print("one", "two") 运行结果 FuNkY: one FuNkY: two 程序说明 * 如果以...为参数, 则表示参数的数量不定. * 参数将会自动存储到一个叫arg的table中. * arg.n中存放参数的个数. arg[]加下标就可以遍历所有的参数. 2.以table做为参
通过例子学习Lua(5)--Lua与C的交互(转)
通过例子学习Lua(5)--Lua与C的交互(转)[@more@] 1.简介 Lua与C/C++结合是很紧密的, Lua与C++交互是建立在Lua与C的基础上的, 所 以偶先从Lua与C讲起. 正如第一讲所说, 运行Lua程序或者说调用Lua主要有两种方式: * 通过命令行执行"Lua"命令 * 通过Lua的C库 虽然此前偶们一直用第一种方式, 但偶要告诉你, 通过Lua的C库执行才是游戏中 常用的方式. 2.Lua的C库 Lua的C库可以做为Shared Library调用, 但一般开发游戏时会把Lua的所有源程序 都包含在内, 并不把Lua编译成共享库的形式. 因为Lua程
通过例子学习Lua(6)--C/C++中用Lua函数(转)
通过例子学习Lua(6)--C/C++中用Lua函数(转)[@more@] 1.简介 偶们这次主要说说怎么由Lua定义函数, 然后在C或者C++中调用. 这里偶们 暂不涉及C++的对象问题, 只讨论调用函数的参数, 返回值和全局变量的使用. 2.程序 这里偶们在e12.lua里先定义一个简单的add(), x,y为加法的两个参数, return 直接返回相加后的结果. 例e12.lua -- add two numbers function add ( x, y ) return x + y end 在前一次里, 偶们说到 lua_dofile() 可以直接在C中执行lua文件. 因为偶们 这个程序里只定义了一个
通过例子学习Lua(7)--调用C/C++函数(转)
通过例子学习Lua(7)--调用C/C++函数(转)[@more@] 1.前言 上次偶说到从C/C++中调用Lua的函数, 然后就有朋友问从Lua中如何调用C/C++的 函数, 所以偶们这次就来说说这个问题. 首先偶们会在C++中建立一个函数, 然后 告知Lua有这个函数, 最后再执行它. 另外, 由于函数不是在Lua中定义的, 所以 无法确定函数的正确性, 可能在调用过程中会出错, 因此偶们还会说说Lua出错处 理的问题. 2.Lua中调用C函数 在lua中是以函数指针的形式调用函数, 并且所有的函数指针都必须满足如下此种 类型: typedef int (*lua_CFun
State模式在J2ME游戏设计中的应用(转)
State模式在J2ME游戏设计中的应用(转)[@more@] 游戏设计中的状态转换是一个既是非常重要又十分复杂的部分。我前几天做移植的时候看到一个public void keyPressed(int keyCode)中间竟然有着近2000千行的代码,这样的话冗长的代码不仅不符合OO的思更加严重的是会打扰我们的程序思路。这两天运用State模式做了一个J2ME游戏中的状态转换由于只是一个实验的例子所以只做了开始菜单和帮助的转换,在这个框架下再加入其他的状态实际就是十分的简单的了。 现在DEMO中只有两个状态,两种状态下keyPressed和paint的功能是不同的,我们用状
J2ME:clip窗口可使用anchor--转(转)
J2ME:clip窗口可使用anchor--转(转)[@more@] /** * drawClip 画一个图片的一部分。clip窗口可使用anchor。 * * @param g * Graphics * @param x * int 要画的位置x * @param y * int 要画的位置y * @param image * Image 图片 * @param clipX * int clip在图片中的坐标x * @param clipY * int clip在图片中的坐标y * @param clipWidth * int clip在图片中的宽度 * @param clipHeight
真正的Java学习从入门到精通(转)
真正的Java学习从入门到精通(转)[@more@] 一、 工具篇JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许
VisualC#编写3D游戏框架示例(转)
VisualC#编写3D游戏框架示例(转)[@more@] 你可能对实际地编写游戏代码期待已久了。由于DirectX SDK 2004年夏季更新包含了一个牢固的示例框架组件,并且它被设计成能在你自己的代码中直接使用,同时还为你处理了很多事务,所以你只要简单的使用它,就可以节省大量的时间和精力。 本文中的例子使用的就是这个示例框架组件,在本文中,你将学习到的内容有: ?如何建立自己的项目 ?如何使用示例框架组件来列举设备 建立项目 在本文中,我假定你的所有开发工作都将使用Visual Studio .NET 2003来完成。如
Lua的function、closure和upvalue(转)
Lua的function、closure和upvalue(转)[@more@] Lua中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型值的数据主要是一条条指令而已),所以在函数体中仍然可以定义函数。假设函数f2定义在函数f1中,那么就称f2为f1的内嵌(inner)函数,f1为f2的外包(enclosing)函数,外包和内嵌都具有传递性,即f2的内嵌必然是f1的内嵌,而f1的外包也一定是f2的外包。内嵌函数可以访问外包函数已经创建的所有局部变量,这种特性便是所谓的词法定界(lexical scoping),而这些局部变量则称为该内嵌函数的外部局部
教你实现卡通渲染的另类勾边方法(转)
教你实现卡通渲染的另类勾边方法(转)[@more@] 根据D3D8里面卡通渲染的例子,里面在勾边的时候是采用对三角形进行着色来实现黑边的效果,对于面比较少的模型来说,会产生很粗糙甚至于不可接受的边缘效果。另外一种比较常用的勾边渲染则是算出法线和光线的夹角接近PI的线,然后来渲染线,这种方法的弊端则是效率太低。 我的方法需要用到stencil buffer,实现步簇是: 1,打开stencil buffer,通过方式设置为always,然后通过之后加1 2,然后渲染原图 3,然后改stencil buffer的配置,通过方式设置为只有等于
自己研究的一个场景物体剔除方法(转)
自己研究的一个场景物体剔除方法(转)[@more@] 场景剔除方法 首先将场景划分成N*M个等大的矩形区域,推荐正方形,每个区域有一个链表保存这个区域上的所有物体,然后用一个N*M的二维数组保存这些指针。进行视锥剔除的时候,首先根据摄象机的参数得到一个近似的三角形(三角形指的是可视区域在XZ平面上的投影区域),算出三角形三个顶点的坐标,然后利用三个顶点坐标可以算出在这个三角形内的,刚才划分的区域,然后将这些区域的链表拼接就得到了所有可见物体。 基于这个方法,区域之间有物体跨越的话,可以很方便的对这两
游戏开发新手入门之Windows编程(转)
游戏开发新手入门之Windows编程(转)[@more@] 开始 多数的Windows程序都需要Windows.h和Windowsx.h这两个头文件,要确保使用它们。当然,你还需要其它的标准的C的头文件,象stdio.h,conio.h等。除了这些,你还会经常看到在程序的开始有这样一行代码: #define WIN32_LEANAND_MEAN 它表示Windows的头文件中将拒绝接受MFC的东西,这将加速你的build时间。如果你从没有打算应用MFC在你的游戏编程中,那就使用它吧。如果你以前从没有看过这种声明类型――在#define后,直接加上一个“单词”,那么它的作用就是有条件编
游戏开发学堂:关于游戏性的概念和实物(转)
游戏开发学堂:关于游戏性的概念和实物(转)[@more@] 游戏性 在游戏业,没有比游戏性(gamepiay)更重要、更混乱、更容易引起争议的名词了。人民普遍认为游戏性是游戏的最重要的属性,是决定游戏成功的关键。什么是游戏性?游戏性包含哪些要素?则众说纷纭,没有定论。这就出现了一个尴尬的局面――游戏性对游戏的成败怎么重要,但大家又说不清楚游戏性是什么,也没有很好的方法来保证游戏性的成功实现。当然有人会争辩说游戏性就和艺术家的知觉一样,是只可意会而不能言传的。你去问一个著名的画家怎么才能画出不朽的杰作来,或者什
游戏开发之游戏策划的基本原则(转)
游戏开发之游戏策划的基本原则(转)[@more@] 看了大家的参赛作品,真让我不知道说什么好。很多作者连游戏策划的最基本的东西都不知道。我感到痛心,同时也感到自己身上的担子不小。现在还不是我放弃游戏的时候。 也许是我们以前没有接触过游戏吧。当网络游戏的风暴席卷神州,很多人突然之间被卷了进去。社会各个阶层的人都感受到了游戏的风靡带来的巨大影响。政府担心它对未成年人有较坏影响的同时,又被它的巨大利润和长远的发展前景所吸引。国产游戏不争气,策划顿时成了炙手可热的好东东。 在中国有个风气,一旦热门的
游戏开发学院:小谈游戏中的各种平衡(转)
游戏开发学院:小谈游戏中的各种平衡(转)[@more@] 游戏平衡的重点在于职业平衡,那职业平衡呢?大部分人都认为只要职业间的攻击,防御公式做到平衡,就等于是职业平衡了。但我不得不提醒大家,要注意“世界平衡”。 一 “物品平衡” 用《传奇》做个比方吧。如果法师的骨玉每天爆几十把,战士的裁决一个月还不出一把。从另一个角度来看,是变相地降低了战士的攻击;另外,法师的骨玉多了,价格降低,出现用升级骨玉,变相地提升了法师的攻击;有的时候,比如武器上可以镶嵌宝石,卡片来提升攻击,如果某一种宝石,卡片的爆出数量
策划入门(一)什么样的创意是可行的(转)
策划入门(一)什么样的创意是可行的(转)[@more@] (一):什么样的创意是能够实现的? 作为一个游戏策划,尤其是一个初学者,脑子里肯定装满了各种各样奇异的想法。但是当你把这些想法告诉给程序或者部门主管时,得到的答案常常只有一句话:“这个东西根本就实现不了!”这瓢冷水可谓是浇的通通透透,让你火热的心迅速冷却了下来。几乎每个策划都有过这种类似的遭遇,我也不例外。一个游戏从一个想法到成为产品需要经历太多的磨难,合格的策划应该在一开始就知道这个想法能否行的通,在经过了严格的论证并初步产生了产品的轮廓后,