1.DirectDraw 这可能是Directx中最重要的技术,由于它是2D图形赖以实现的渠道。也是Direct3D构建于其上的帧缓冲层。

2.DirectDraw是由非常多借口组成的。共同拥有5个接口

I. IUnknown 全部COM对象都必须从这个基本借口派生,DirectDraw也不例外。

IUnknown仅仅包括Addref(),Release()和 QueryInterface() 三个函数。这些函数在其它接口中会被复写。

II.  IDirectDraw 这是開始使用DirectDraw时必须创建的主接口对象。

III. IDirectDrawSurface 这表示你用DirectDraw创建、控制和现实的实际显示表面。

IIII. IDirectDrawPalette 支持以使用256或者更少的颜色在视频模式下处理调色板。

V. IDirectDrawClipper 用于剪切DirectDraw光栅和位图操作到一些可见显示表面的子集。

3.创建一个DirectDraw

I. 创建主DirectDraw对象并使用 QueryInterface() 来得到一个IDirectDraw7接口。或者直接使用DirectDrawCreateEx()创建一个DirectDraw7接口。

II. 使用IDirectDrawSurface7接口至少创建一个主显示表面用以画图。

III. 用IDirectDrawPalette接口创建一个色板。用RGB三元组初试化并配置到相关显示表面中。

IIII. 假设DirectDraw应用程序要使用窗体。或者要降低位图以免溢出DirectDraw显示表面的可见边界,你至少须要创建一个裁剪器并将其尺寸设置为可见窗体的范围。

V. 在主显示表面上画图。

4创建DirectDraw对象的三种方法

I. 利用 QueryInterface() 对版本号经行升级

   LPDIRECTDRAW lpdd = NULL;
LPDIRECTDRAW lpdd7 =NULL; if(FAILED(DirectDrawCreate(NULL,&lpdd,NULL)))
{
//error
} if(FAILED(lpdd->QueryInterface(IID_IDirectDraw7,(LPVOID *)&lpdd7)))
{
//error
}

ps:接口标示符格式

          IID_IDirectCD

          当中字符C表示组件:Draw代表DirectDraw。Sound代表DirectSound,Input代表DirectInput,以此类推。字符D是一个从2~N的数字。代指你须要接口。

II.调用底层的COM创建IDirectDraw7

  if(FAILED(CoInitialize(NULL)))
{
//error
}
if(FAILED(CoCreateInstance(&CLSID_DirectDraw,NULL,CLSCTX_All,&IID_IDirectDraw7,&lpdd7)))
{
//error
}
if(FAILED(IDirectDraw7_Initialize(lpdd7,NULL)))
{
//error
}
CoUninitialize();

III.使用 DirectDrawCreateEx() 函数创建 IDirectDraw7

    LPDIRECTDRAW lpdd;
DirectDrawCreateEx(NULL,(void *)&lpdd,IID_IDirectDraw7,NULL);

版权声明:本文博主原创文章,博客,未经同意不得转载。

《Windows游戏编程技巧大师》就DirectDraw而创建DirectDraw知识笔记的更多相关文章

  1. Windows游戏编程之从零开始d

    Windows游戏编程之从零开始d I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来 ...

  2. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存

    第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物 ...

  3. windows游戏编程 创建WIN32一个HelloWOrld程序

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22449085 作者:jadeshu   邮箱: jades ...

  4. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记2——透明贴图,动画技术

    第5章 透明贴图 像这样直接贴图会产生这种情况,所以我们需要透明贴图. 透明遮罩法:主要利用BitBlt函数中Raser(光栅)值的运算,需要准备素材图和遮罩图: 这个方法的原理解释见书131页. 示 ...

  5. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记3——输入消息处理,物理建模与粒子系统初步

    第7章 Windows游戏输入消息处理 1. 键盘消息处理 之前提到的窗口过程函数有两参数与消息输出有关——wParam和llParam LRESULT CALLBACK WindowProc( _I ...

  6. windows游戏编程 绘图基础

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22451353 作者:jadeshu   邮箱: jades ...

  7. Windows游戏编程大师技巧之三角形填充

    一.三角形的种类 三角形一般可以分为如下的四种类型(这四种类型是对于计算机来说的,不是数学意义上的分类): 平顶三角形:就是在计算机中显示的上面两个顶点的Y坐标相同. 平底三角形:就是在计算机中显示的 ...

  8. 《Windows游戏编程大师技巧》学习笔记——关于创建显示表面

    1.如你所知,显示在屏幕上的图像仅仅只是是以某种格式存储在内存中的有色像素组成的矩阵.或是调色板化的或是RGB模式的.在不论什么一种情况下.要想做点什么你都必须知道如何绘制图到内存中,然而Direct ...

  9. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记10——三维天空的构建&三维粒子的实现&多游戏模型的载入

    第23章 三维天空的构建 目前描述三维天空的技术主要包括三种类型,直接来介绍使用最广泛的模拟技术,详细的描述可以见作者的博文. 天空盒(Sky Box),即放到场景的是一个立方体.它是目前使用最广泛的 ...

随机推荐

  1. 【Android基础】listview控件的使用(4)-----自定义布局的listview的使用

    前面我介绍了listview控件的不同用法,但是这些用法在实际的开发项目中是不足以满足需求的,因为前面的几种用法只能简单的显示文本信息,而且布局都比较单一,很难做出复杂的结果,在实际的开发项目中,90 ...

  2. UVa 11069 - A Graph Problem

    题目:给你一个集合{1,2,..,n},计算子集的个数,子集的元素不能相邻且不能再插入元素. 分析:dp,动态规划.相邻元素间仅仅能相差3或者2. 动态方程:f(k)= f(k-2)+ f(k-3): ...

  3. [Ext JS 4] 实战Chart 协调控制(单一的坐标,两个坐标)

    前言

  4. JAVA中类以及成员变量和成员方法的修饰符的总结

    一  类的修饰符 java中的文件结构由大到小为:一个工程,一个工程下可以有许多包,每个包中可以有许多类. 类的修饰符分为         访问权限修饰符          和             ...

  5. WinJS Clipboard

    //剪贴板 方法1 window.uexClipboard = { copy: null, getContent: null, cbGetContent: null }; uexClipboard.c ...

  6. DotNetOpenAuth实践

    DotNetOpenAuth实践之搭建验证服务器 DotNetOpenAuth是OAuth2的.net版本,利用DotNetOpenAuth我们可以轻松的搭建OAuth2验证服务器,不废话,下面我们来 ...

  7. C#+Mapxtreme 实现一些GIS系统基本的功能

    此程序包括了mapxtreme地图相关基本功能的演示其中包括 鹰眼地图,图层控制,发达,缩小,平移地图,地图模糊查询,中点工具,距离测量工具,面积测量工具,图元信息查看工具.适合于企业级开发,可以为您 ...

  8. .NET(C#):浅谈程序集清单资源和RESX资源

    原文:.NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  9. GRUB三步通(转)

    GRUB三步通 ################### GRUB的优点 ################### GRUB 是引导装入器(boot loader) -- 它负责装入内核并引导 Linux ...

  10. 删RAC中间ASM和LISTENER 资源的正确方法

    在我们的安装RAC什么时候.有时因各种错误加载错误ASM实例或LISTENER显示器,或增加CLUSTERWARE资源,但并没有真正的工作,例如: 如图所看到的,这里在2个节点分别创建过ASM1和AS ...