DirectX5.0最新游戏编程指南 DirectDraw教程篇 二、第一个DirectDraw实例

学习提速专享!AI工具全家桶免费用 限时购周边加赠Coding Plan Lite,解锁20+主流AI工具,写代码、查资料快人一步! 阅读详情

二、第一个DirectDraw实例
    要使用DirectDraw,首先必须创建DirectDraw对象的一个实例来表征计算机上的显示适配卡,然后使用接口方法来处理对象。另外还需要创建一个或多个DirectDrawSurface对象的实例来显示游戏。DDEX1首先创建一个DirectDraw对象,再创建一个主表面(primary surface)和一个后台缓冲区(back buffer),然后在表面之间转换。DDEXx例子都是用C++写成的,如果你使用的是C编译器,必须将代码做适当改动,至少要加入虚表和指向接口方法的指针。

1、首先初始化DirectDraw对象
DDEX1 程序在doInit函数包含了DirectDraw 的初始化代码:
// 创建主DirectDraw 对象
ddrval = DirectDrawCreate( NULL, &lpDD, NULL );
if( ddrval == DD_OK )   
    {
    // 获取独占模式
    ddrval = lpDD->SetCooperativeLevel( hwnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN );
    if(ddrval == DD_OK )  
 {
        ddrval = lpDD->SetDisplayMode( 640, 480, 8 );
        if( ddrval == DD_OK )       
  {
              //创建带有一个后台缓冲区的主表面
            ddsd.dwSize = sizeof( ddsd );
            ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
            ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
                                  DDSCAPS_FLIP |
                                  DDSCAPS_COMPLEX;
            ddsd.dwBackBufferCount = 1;
            ddrval = lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL );
            if( ddrval == DD_OK )          
   {
                //获取后台缓冲区的指针
                ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
    ddrval=lpDDSPrimary->GetAttachedSurface(&ddscaps, &lpDDSBack);
                if( ddrval == DD_OK )  
              {
                    // 画出一些文本
                    if (lpDDSPrimary->GetDC(&hdc) == DD_OK)     {
                        SetBkColor( hdc, RGB( 0, 0, 255 ) );
                        SetTextColor( hdc, RGB( 255, 255, 0 ) );
                        TextOut( hdc, 0, 0, szFrontMsg, lstrlen(szFrontMsg) );
                        lpDDSPrimary->ReleaseDC(hdc);
                    }
                    if (lpDDSBack->GetDC(&hdc) == DD_OK)    {
                        SetBkColor( hdc, RGB( 0, 0, 255 ) );
                        SetTextColor( hdc, RGB( 255, 255, 0 ) );
                        TextOut( hdc, 0, 0, szBackMsg, lstrlen(szBackMsg) );
                  &nb

DirectX5.0最新游戏编程指南 DirectDraw教程 一、配置DirectX SDK  DirectX5.0最新游戏编程指南DirectDraw教程    DirectX是为Visual C++的用户准备的,因此要编制DirectDraw游戏程序,最好对VC要有一定的了解。不愿意使用VC的用户也可以利用消息Arakelian Soft公司开发的专门针对Visual Basic5.0用户的ActiveX控件DirectStudio98或Tegosoft公司的TegoSoft A 阅读详情

相关推荐

调用GetAttachedSurface不成功

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {    HWND hWnd;    hInst = hInstance; // Store instance handle in our global variable    //Modified code begin    DDSURFACEDESC ddsd;    DDSCAPS

chuantian3080的博客 385

DirectX5.0最新游戏编程指南

DirectX5.0最新游戏编程指南综述武汉 朱春喜 & 吴佳鲜    对于众多的游戏制作者来说,Microsoft的DirectX 5的推出不啻是一个极好的消息。它包含了编制下一代计算机游戏和多媒体应用程序的最新技术和工具,为广大的程序员提供了一整套的应用程序接口API,使程序员能够设计高性能实时的应用程序。DirectX使运行在Microsoft Windows操作系统下的游戏比运行在

holyfire的专栏 2163

2013年4月9日(7——5表面动态和页面切换)

距离上一次更新有一个月了,这个月进行了SHADOWMAP和HDR,幸运的是,4*4PCF已经搞定,HDR仍然在继续中。后来发现了还需要动态贴图,这个2D的引擎需要继续写下去,尽管不知道会如何。   闲话少说,现在看看离屏表面,第一类是后备缓冲,   后备缓,是指一些动画链中的表面,具有和主表面相同的尺寸和色深,创建主表面时也创建后备缓冲。 后备缓冲通常在VRAM中,另外,也可以将后备缓冲

coder 1368

DirectX 5.0 最新游戏编程指南

   DirectX 5.0 最新游戏编程指南 DirectX是为VisualC++的用户准备的,因此要编制DirectDraw游戏程序,最好对VC要有一定的了解。不愿意使用VC

Dantin的专栏 1699

DirectX5.0最新游戏编程指南 DirectDraw教程 第一个DirectDraw实例 (转)

DirectX5.0最新游戏编程指南 DirectDraw教程 第一个DirectDraw实例 (转)[@more@]第一个DirectDraw实例 要使用DirectDraw,首先必须创建DirectDraw对象的...

csd3176的博客 157

DirectX5.0最新游戏编程指南 DirectDraw 一、DirectDraw的基本图象概念

 DirectX5.0最新游戏编程指南 DirectDraw    DirectDrawDirectX SDK的主要部分之一,它允许你直接对显示内存操作,支持硬件位块传输、硬件覆盖、表面翻转,并且保持同目前的基于Windows的应用程序和驱动程序兼容。    DirectDraw是一种软件接口,它除了能直接对显示设备存取外,还保持同Windows图形设备接口GDI(Graphics D

holyfire的专栏 2628

DirectX5.0最新游戏编程指南 DirectDraw教程(转)

选自holyfire的Blog(http://blog.csdn.net/holyfire)    DirectX是为Visual C++的用户准备的,因此要编制DirectDraw游戏程序,最好对VC要有一定的了解。不愿意使用VC的用户也可以利用消息Arakelian Soft公司开发的专门针对Visual Basic5.0用户的ActiveX控件DirectStudio98或Tegosoft公

hollysky的专栏 1851

DirectX5.0最新游戏编程指南 DirectDraw DirectDraw的体系

DirectDraw的体系    多媒体软件要求高性能的图象。通过DirectDraw,Microsoft使得对图象敏感性的程序在速度和效率上都比在GDI上有了大大是提高,同时又保持了设备无关性,DirectDraw提供的工具能完成如下的关键任务: .操作多个显示表面 .直接存取视频内存 .页翻转 .后台缓冲 .调色板的管理 .剪切另外,DirectDraw在运行时允许你查询显示硬件的性能然后

holyfire的专栏 2343

DirectX5.0最新游戏编程指南 DirectDraw(转)

    DirectDrawDirectX SDK的主要部分之一,它允许你直接对显示内存操作,支持硬件位块传输、硬件覆盖、表面翻转,并且保持同目前的基于Windows的应用程序和驱动程序兼容。    DirectDraw是一种软件接口,它除了能直接对显示设备存取外,还保持同Windows图形设备接口GDI(Graphics Device Interface)兼容。对于图形来说,它并不是一种高级应

hollysky的专栏 2185

DirectX5.0最新游戏编程指南 DirectDraw 三、DirectDraw的要素(一)

 三、DirectDraw的要素    DirectDraw中最基本的要素有协作等级、显示模式、DirectDraw对象、表面、调色板、剪切板等,下面对各个要素逐一进行介绍。1、协作等级(Cooperative Level)   协作等级描述了DirectDraw如何同显示交互及对那些可能影响显示的事件的反应。你可以使用IDirectDraw2::SetCooperativeLevel方法来设

holyfire的专栏 2681

DirectX5.0最新游戏编程指南 DirectDraw教程 四、使用覆盖表面 (转)

DirectX5.0最新游戏编程指南 DirectDraw教程 四、使用覆盖表面 (转)[@more@]四、使用覆盖表面  本例将使用DirectX SDK包含的Mosquito范例程序一步一步地说明怎样在程序中使用Direc...

congmi8078的博客 176

DirectX5.0最新游戏编程指南 DirectDraw教程

DirectDraw教程    DirectX是为Visual C++的用户准备的,因此要编制DirectDraw游戏程序,最好对VC要有一定的了解。不愿意使用VC的用户也可以利用消息Arakelian Soft公司开发的专门针对Visual Basic5.0用户的ActiveX控件DirectStudio98或Tegosoft公司的TegoSoft ActiveX for Visual B

萌大叔的专栏 1358

DirectX5.0最新游戏编程指南--综述(转)

    对于众多的游戏制作者来说,Microsoft的DirectX 5的推出不啻是一个极好的消息。它包含了编制下一代计算机游戏和多媒体应用程序的最新技术和工具,为广大的程序员提供了一整套的应用程序接口API,使程序员能够设计高性能实时的应用程序。DirectX使运行在Microsoft Windows操作系统下的游戏比运行在 MS-DOS操作系统下的游戏具有更高的性能的更好的交互性,甚至比专用的

hollysky的专栏 1305

DirectX5.0最新游戏编程指南 DirectDraw 三、DirectDraw的要素(四)

5、调色板(Palette)    调色表面需要有调色板才能正确地显示出来。一个调色表面(既颜色索引标)是一些数字的简单集合,其中每个每个数字都表征了一个像素。数字的值是一个颜色表的索引,它告诉DirectDraw显示每个像素时该使用什么颜色。DirectDrawPalette对象通常称为调色板,它提供了管理颜色表的简单方法。使用16位或更高位数的像素格式的表面不使用调色板。     Direct

holyfire的专栏 1999

DirectX5.0最新游戏编程指南 DirectDraw教程 四、使用覆盖表面

四、使用覆盖表面  本例将使用DirectX SDK包含的Mosquito范例程序一步一步地说明怎样在程序中使用DirectDraw和硬件支持的覆盖表面。Mosquito使用覆盖表面的翻转链而没有位块传输到主表面将运动位图显示在桌面上。Mosquito程序调整覆盖表面的特征以适应硬件的限制。1、创建一个主表面    要使用覆盖表面,必须先要初始化一个主表面,覆盖表面将显示在该主表面上。Mosq

holyfire的专栏 2202
上一篇: DirectX5.0最新游戏编程指南 DirectDraw教程篇 一、配置DirectX SDK
下一篇: DirectX5.0最新游戏编程指南 DirectDraw教程篇 四、使用覆盖表面
holyfire
博客等级 码龄26年 21粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值