Windows Game Note9

1、为多边形创建边界矩形同创建边界球是采取相同的方式,但你需要找出四条边而不是半径。为了找出(max_x, min_x, max_y, min_y)的值,可采取如下的简单算法:
① 初始化(max_x = 0, min_x = 0, max_y = 0, min_y = 0),这是假设多边形的中心在(0, 0)。
② 对多边形的每个顶点,计算(max_x, min_x, max_y, min_y)的(x, y)分量,并进行近似调整。
2、判断点是否在多边形中: 如果进行检测的多边形是一个凸多边形,你可以想象将每条边延长至无限长,从而平面被分割成两半,如果检测的点是在每个半空间的内侧,根据凸多边形的性质,点一定是在多边形的内部。 将直线以一定顺序进行标记,并将之转变为矢量,之后将每条线段想象成一个平面,使用点积操作符,便可以确定是在平面的哪一侧还是恰好就在平面上。
3、实际情况中,游戏有时需要将帧速度锁定在某个值,比如30fps,实现帧速锁定的一个较好的方法是在循环开始时启动一个定时器(或记下当时的时间),然后再游戏循环的结尾处检测是否满足30fps,也就是看看是否经过了三十分之一秒,如果是的话,则显示下一帧,如果不是,则等待知道剩余时间耗尽为止。
int Game_Main(void *parms = NULL, int num_parms = 0)
{
    Get_Clock();
  //do works
    Wait_Clock();
}
DWORD Get_Clock(void)
{
  return(GetTickCount());
}
DWORD Start_Clock(void)
{
return (start_clock_count = Get_Clock());
}
DWORD Wait_Clock(DWORD count)
{
while((Get_Clock() - start_clock_count)  < count)
return (Get_Clock());
}
4、DirectX有一个垂直空白(Vertical Blank)检测函数,可以在电子枪渲染图像时使用它来测量它的状态。WaitForVerticalBlank()。 垂直空白:当电子枪完成绘制所有扫描线,它必须回到显示设备的最上端,电子枪复位回到显示设备的最上端的这段时间叫做垂直空白。
5、 页面卷轴(Page Scrolling) 基本上是指当玩家在屏幕上四处走动或越过了某个阀值的时候,整个屏幕会随之更新,就好像是玩家走进了另一个房间一样。
6、使用大块DirectDraw表面实现平滑卷动:
Windows <wbr>Game <wbr>Note9
7、稀疏位图平铺显示引擎: 平铺显示引擎的位移问题是需要画很多位图,有时想编写一个卷动游戏,但是并没有太多的图形需要卷动,也并不希望所有的tile都有相同的尺寸。对于这类的游戏世界,可以创建一个很大的全局图形,比如说让我们用4*4个屏幕(或者40*40)。然后,我们不用tile地图填充每一个子屏幕,而仅仅将每个对象放在世界坐标系的某个位置。
Windows <wbr>Game <wbr>Note9
8、等轴侧(Isometric,ISO)游戏,实际上就是采用一定倾斜的视角的游戏,如45度。
实现ISO 3D有三种方法:
① 基于单元,全二维
② 基于全屏,具有一些二维或三维的碰撞网络
③ 采用全三维数学运算,使用一个固定的相机视角
    方法1:基于单元,全二维
首先需要确定一个视角,根据它来画所有的图片。一般地,需要将所有的东西都画成矩形tile,就像你在普通卷轴引擎里做的那样。 渲染时有一定的技巧,当绘制场景时,你不能以随意的顺序画对象,而必须使远的对象被近的对象所遮盖。原则是,从后往前画。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值