
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
lpdd7->ooperativeLevel(hwnd, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
现在协作级别已经设置好了,让我们再看看改变显示模式的函数:
HRESULT SetDisplayMode(
DWORD dwWidth,
DWORD dwHeight,
DWORD dwBPP,
DWORD dwRefreshRate,
DWORD dwFlags
);
别忘了用宏去检测调用函数的成功或失败!大多数的参数同你料想的差不多:
· DWORD dwWidth,dwHeight:以象素为单位,新显示模式的尺寸。
· DWORD dwBPP:新显示模式的色彩深度。就是每一个象素有多少位字节。可以设置为8,16,24或32。警告:很多显示卡不支持24-bits。
· DWORD dwRefreshRate:屏幕的刷新频率。但你最好设置为0,使用默认的刷新频率。
· DWORD dwFlags:对不起,这次没有列表了^_^,唯一的选择是DDSDM_STANDARDVGAMODE,它把显示模式设置为0x13(DOS程序员的好朋友),取代了Mode X的320×200×8的模式。如果你还想使用其它的模式(你可能经常需要),没有问题,把它设置为0好了。
这些就是显示模式的设置,事先最好了解你的显示卡支持的显示模式,它们通常都支持640×480,800×600,1024×768等等,这些都是标准的模式。但是如果你非得设置成542×366的模式,你可能就会得到错误的反馈。科技在发展吗,什么都是可能的。让我们继续吧!
九.创建表面
这一次,我们需要比调用一个函数多一点点的东东。创建表面不是很难的,实际上,也是由一个单独的函数完成的,但是首先你要填充一个描述你所要创建的表面的结构。给你看这个结构之前,我只想告诉你,你不必填满所有的成员。^_^这就是它,DDSURFACEDESC2:
typedef struct _DDSURFACEDESC2 {
DWORD dwSize;
DWORD dwFlags;
DWORD dwHeight;
DWORD dwWidth;
union
{
LONG lPitch;
DWORD dwLinearSize;
} DUMMYUNIONNAMEN(1);
DWORD dwBackBufferCount;
union
{
DWORD dwMipMapCount;
DWORD dwRefreshRate;
} DUMMYUNIONNAMEN(2);
DWORD dwAlphaBitDepth;
DWORD dwReserved;
LPVOID lpSurface;
DDCOLORKEY ddckCKDestOverlay;
DDCOLORKEY ddckCKDestBlt;
DDCOLORKEY ddckCKSrcOverlay;
DDCOLORKEY ddckCKSrcBlt;
DDPIXELFORMAT ddpfPixelFormat;
DDSCAPS2 ddsCaps;
DWORD dwTextureStage;
} DDSURFACEDESC2, FAR *LPDDSURFACEDESC2;
坦率的说,编写DirectDraw的应用程序其实并不难。但是事情往往是这样,80%的工作只需要我们花费20%的时间就可以完成,而剩下的20%的工作却需要我们花费80%的时间来完成。DirectDraw编程比这还要严重,就笔者的看法,至少90%的工作只需要我们不到10%的时间来完成,而剩下的不到10%的工作却至少需要我们90%的时间!结构DDSURFACEDESC就是10%的一部分,它较为复杂,它嵌套了其它的结构。让我们看看这个怪物到底做了什么。我只说说重点的部分:
· DWORD dwSize:任何DirectX结构都有dwSize这个成员,表示结构的大小。有了它,当函数接收到指向这些结构的指针时,就可以测定结构的大小了。
· DWORD dwFlags:太好了,又有一大堆标志常量了^_^ !这些标志告诉接收函数哪些数据成员是有效的。要想使需要的数据成员有效,就必须传递相对应的标志常量给dwFlags,你当然可以用“|”组合它们。以下是列表:
◎ DDSD_ALL:所有的数据成员都有效。
◎ DDSD_ALPHABITDEPTH:表示数据成员dwAlphaBitDepth有效。
◎ DDSD_BACKBUFFERCOUNT:表示数据成员dwBackBufferCount有效。
◎ DDSD_CAPS:表示数据成员ddsCaps有效。
◎ DDSD_CKDESTBLT:表示数据成员ddckCKDestBlt有效。
◎ DDSD_CKDESTOVERLAY:表示数据成员ddckCKDestOverlay有效。
◎ DDSD_CKSRCBLT:表示数据成员ddckCKSrcBlt有效。
◎ DDSD_CKSRCOVERLAY:表示数据成员ddckCKSrcOverlay有效。
◎ DDSD_HEIGHT:表示数据成员dwHeight有效。
◎ DDSD_LINEARSIZE:表示数据成员dwLinearSize有效。
◎ DDSD_LPSURFACE:表示数据成员lpSurface有效。
◎ DDSD_MIPMAPCOUNT:表示数据成员dwMipMapCount有效。
◎ DDSD_PITCH:表示数据成员lPitch有效。
◎ DDSD_PIXELFORMAT:表示数据成员ddpfPixelFormat有效。
◎ DDSD_REFRESHRATE:表示数据成员dwRefreshRate有效。
◎ DDSD_TEXTURESTAGE:表示数据成员dwTextureStage有效。
◎ DDSD_WIDTH:表示数据成员dwWidth有效。
· DWORD dwheight,dwWidth:表示要创建表面的尺寸。以象素为单位。
· LONG l
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页