《Windows游戏编程技巧大师》就DirectDraw而创建DirectDraw知识笔记
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知识笔记的更多相关文章
- Windows游戏编程之从零开始d
Windows游戏编程之从零开始d I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存
第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物 ...
- windows游戏编程 创建WIN32一个HelloWOrld程序
本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22449085 作者:jadeshu 邮箱: jades ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记2——透明贴图,动画技术
第5章 透明贴图 像这样直接贴图会产生这种情况,所以我们需要透明贴图. 透明遮罩法:主要利用BitBlt函数中Raser(光栅)值的运算,需要准备素材图和遮罩图: 这个方法的原理解释见书131页. 示 ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记3——输入消息处理,物理建模与粒子系统初步
第7章 Windows游戏输入消息处理 1. 键盘消息处理 之前提到的窗口过程函数有两参数与消息输出有关——wParam和llParam LRESULT CALLBACK WindowProc( _I ...
- windows游戏编程 绘图基础
本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22451353 作者:jadeshu 邮箱: jades ...
- Windows游戏编程大师技巧之三角形填充
一.三角形的种类 三角形一般可以分为如下的四种类型(这四种类型是对于计算机来说的,不是数学意义上的分类): 平顶三角形:就是在计算机中显示的上面两个顶点的Y坐标相同. 平底三角形:就是在计算机中显示的 ...
- 《Windows游戏编程大师技巧》学习笔记——关于创建显示表面
1.如你所知,显示在屏幕上的图像仅仅只是是以某种格式存储在内存中的有色像素组成的矩阵.或是调色板化的或是RGB模式的.在不论什么一种情况下.要想做点什么你都必须知道如何绘制图到内存中,然而Direct ...
- 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记10——三维天空的构建&三维粒子的实现&多游戏模型的载入
第23章 三维天空的构建 目前描述三维天空的技术主要包括三种类型,直接来介绍使用最广泛的模拟技术,详细的描述可以见作者的博文. 天空盒(Sky Box),即放到场景的是一个立方体.它是目前使用最广泛的 ...
随机推荐
- openSUSE 国内镜像摘要
1. 北交(BJTU): http://mirror.bjtu.edu.cn/opensuse http://mirror.bjtu.edu.cn/packman/suse 2. 华中科大(HUST) ...
- JAVA学习笔记 -- 包资源文件jar包裹
初学者GUI,使用Eclipse出口jar包裹,不能显示最小化的图标集(hello.png根文件下的项目文件夹文件).码如下面: import javax.swing.JFrame; import j ...
- Flex入门(三)——微架构之Cairngorm
大家都知道我们在开发后台的时候,都会使用MVC,三层等分层架构,使后台代码达到职责更为分明单一,高内聚低耦合,比如,Dao层仅仅是进行和数据库打交道,负责处理数据:Service(B层)仅仅是进行逻辑 ...
- linux下串口调试工具/串口终端推荐: picocom
对于picocom, kermit, minicom, picocom 最简单易用,也全然符合我的使用需求. 安装(mint / ubuntu): $ sudo apt-get install pic ...
- java 遍历树节点 同时保留所有的从根到叶节点的路径
直接在代码.稍后细说 数据结构定义: /** * */ package Servlet; import java.util.ArrayList; import java.util.List; /** ...
- cocos2dx 子弹飞作为一个例子来解释解酒效果类CCMotionStreak
感谢点评与关注,欢迎转载与分享. 勤奋努力,持之以恒! 在游戏开发中,有时会须要在某个游戏对象上的运动轨迹上实现渐隐效果.比方子弹的运动轨迹,假设不借助引擎的帮助.这样的效果则须要通过大量的图片来实现 ...
- Cocos2d-x使用Luajit将Lua脚本编译成bytecode,启用加密
http://www.cocoachina.com/bbs/read.php?tid=205802 lua脚本进行加密,查了一下相关的资料 ,得知lua本身能够使用luac将脚本编译为字节码(byte ...
- hdu 5076 最小割灵活运用
这意味着更复杂的问题,关键的事实被抽象出来:每个点,能够赋予既有的值(挑两个一.需要选择,设定ai,bi). 寻找所有和最大.有条件:如果两个点同时满足: 1,:二进制只是有一个不同之处. 2:中的 ...
- jQuery表格排序总成-tablesorter
一个.进口单证 <script type="text/javascript" src="js/jquery.js"></script> ...
- Swift学习——Swift解释特定的基础(七)
Implicitly Unwrapped Optionals 隐式解析选项 如上所述.可选意味着常数或变量"没有值".通过可选if声明来推断是否存在值,假设有值析值. 有时候 ...