Windows游戏编程大师技巧
文章平均质量分 85
yqyy1989
这个作者很懒,什么都没留下…
展开
-
Windows Game Note1
1、DirectX几乎可以为你提供对所有设备的硬件级的控制。通过叫做COM的技术,以及一套由Microsoft和硬件厂商共同编写的驱动程序库,就可以达到上述效果。Microsoft提出了一套协议,包括函数、变量、数据结构等等,硬件厂商必须遵守这套协议才能开发与硬件通信的驱动程序。2、DirectX组件: DirectDraw、DirectSound、DirectMusic、DirectI原创 2013-11-05 08:18:01 · 475 阅读 · 0 评论 -
Windows Game Note7
1、如何编写窗口模式的DirectX程序,如何操作主表面①窗口方式的DirectDraw程序的主表面就是整个显示屏幕,而不仅仅是你的窗口,这就意味着你必须找出你的窗口客户区的坐标,并确保只是在它上面操作②裁剪,你必须告诉DirectDraw裁剪系统,你在屏幕上有一个窗口,是它按照这个窗口进行裁剪,无论你的窗口如何移动位置或者改变尺寸③8位调色板。如果视频是8位模式,改变调色板会带原创 2013-11-05 08:18:29 · 444 阅读 · 0 评论 -
Windows Game Note5
1、 要设置DirectDraw裁剪,需要执行以下步骤① 创建DirectDraw裁剪器对象,使用IDIRECTDRAW7::CreateClipper()函数② 创建裁剪序列(是矩形的列表,存储为RECT结构,这些矩形对应于可以进行blit的有效区域)③ 用IDIRECTDRAWCLIPPER::SetClipList()将裁剪序列发送给裁剪器④ 用I原创 2013-11-05 08:18:14 · 479 阅读 · 0 评论 -
Windows Game Note2
1、总共只有五个组成了DirectDraw:① IUnknown:所有COM对象都必须从这个基本接口生成。②IDirectDraw:这是开始使用DirectDraw时必须创建的主接口对象。IDirectDraw一对一地表示视频卡及其支持硬件。③IDirectDrawSurface:这表示你用DirectDraw创建、控制和显示的实际显示表面。一个DirectDraw显示表面可以使用显原创 2013-11-05 08:18:03 · 433 阅读 · 0 评论 -
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)原创 2013-11-05 08:18:35 · 492 阅读 · 0 评论 -
Windows Game Note8
1、画直线的Bresenham算法, 开始于(x0,y0)点,但是它不采用斜率来计算移动。它先在x方向上移动一个像素,然后再决定如何移动y方向的像素,以使所描画的直线尽量接近于实际的线。这是用过使用一个衡量光栅化得出的直线与实际直线之间的接近程度的误差项来实现的。该算法对误差项不断调整,以使得数字化的光栅线能够尽量接近真实直线。 x = x0; y = y0; dx = x1 - x0原创 2013-11-05 08:18:33 · 429 阅读 · 0 评论 -
Windows Game Note6
1、执行位图的缩放很简单,需要你做的就是改变目标RECT的尺寸,只要它同源RECT的尺寸不同,图像就会被缩放。对于旋转,你不得不设一个DDBLTFX结构,执行旋转操作,你必须有支持旋转的硬件加速,然后设置DDBLTFX结构。例:DDBLTFX ddbltfx;DDRAW_INIT_STRUCT(ddbltfx);ddbltfx.dwRotationAngle = angle;然后,像通原创 2013-11-05 08:18:16 · 446 阅读 · 0 评论 -
Windows Game Note4
1、使用blitter进行内存填充:blitter是一个相当复杂的硬件。内存填充以为着用某些值填充VRAM中的一块区域。利用硬件blitter你可以立即直接填充或者移动大块VRAM和DirectDraw表面。 DirectDraw有两个用于显存块移动的函数是IDIRECTDRAWSURFACE7::Blt()和IDIRECTDRAWSURFACE7::BltFast()Blt()函数中的原创 2013-11-05 08:18:12 · 436 阅读 · 0 评论 -
Windows Game Note3
1、16位高彩模式: Alpha.5.5.5 X.5.5.5 5.6.5获取像素格式:要知道任意表面的像素格式,需要调用IDIRECTDRAWSURFACE7::GetPixelFormat()函数DDPIXELFORMAT结构,dwFlags常用标志:DDPF_PALETTEINDEXED8:说明表面采用8位调色板模式DDPF_RGB:说明表面采用RGB模式,其格式可以原创 2013-11-05 08:18:09 · 445 阅读 · 0 评论 -
Bresenham算法(转)
上回说到, 在看一本书《Windows游戏编程大师技巧》 (Tricks of Windows Game ProgrammingGurus). 这次继续书里的内容: 直线光栅化的Bresenham算法. 书上讲的比较含糊, 没有讲算法的推导过程,更没讲算法是怎么想出来的. 所以我们只好自己动手, 丰衣足食…直线光栅化直线光栅化是指用像素点来模拟直线. 比如下图中用蓝色的像素点来模拟红色的直原创 2013-11-05 08:18:50 · 795 阅读 · 0 评论