|
|
其实要使图片运行起来,[directdraw就是使图片运行起来]
就要经过
初始化-〉创建页面-〉BIT-> 换页处理
的过程
注意几个函数
BOOL InitDDraw(void)
//初始化函数这个基本可以照抄
void Flip(void)
//换页
void FreeDDraw( void )
//将初始化的对象清空掉
我其实也忘记当初做这个A10girl的做法了,回看代码,有一种含糊不清的感觉。不过,让我们一同来分析函数理清里面的思路,Let's go
壹:
InitDDraw(void)
在初始化里,许多的标志填充我们可以从手册了查到其作用,我们也不必深究它,我们只想让画面动起来。
初始化,必须创建一个主页面和一个离屏页面。我们可以理解为放电影中 主页面
是电影屏幕,就是一块白布;离屏页面就是投射进去的画面,认准它了:
&lpDDSBack//它是出效果的关键
至于地图页面,火焰页面,我已经改成为背景[活动],前景[静止],可以理解为在后台待命的演员,一旦表演就会出现在台上。
//那个BA11D.bmp麻烦改成BA11A.bmp ,或者你想要的图。可以不管back.bmp 这是在test的时候用过的,整个程序我就只用了lpDDSFlame,在其中切割出想要的大小
贰:
void DrawMap(void )//绘制背景地图
这里要注意的是切割出来的图块必须符合可用原则,比如它不能大于“装载器”预先的大小
//&backrect 大小 这里统一了是128*128的块
GetRect(&srect, 120,352,128,128);//从lpDDSFlame(120,352)位置开始截取 128*128的大小,当然这一行代码表达不了这么多内容
配合往后的几行就完成的图块截取,放置离屏页面的过程。
void DrawEyes(void)
//也是如此,看到没有该死的创建离屏页面不能大于窗口尺寸
接下来的延时,更新火焰状态 请删掉
叁:
void Flip(void)// 虽然离屏页面有图了,而且不止一个,我们得把它翻出来
[投射到屏幕上]lpDDSFront-〉
&backrect//至今是一个迷 它起到什么作用呢?
对比void FlipKEYSRC(void):void Flip(void)
等等void FlipKEYSRC(void)只是绘制离屏页面 [如果在图片中那是纯绿的地方]它在覆盖背景,不然背景存在什么东西 ,你刚写完的字符、窗口、还是...会很难看的
回看这几行(配合 Flip(void))
GetClientRect(hWnd, &rect);
forewidth=rect.right-rect.left;
foreheight=rect.bottom-rect.top;
GetRect(&backrect, 0, 0, forewidth, foreheight);
得到窗口的大小从某位置开始清空页面[这里是(0,0)] ,翻转出来的图块也在某位置开始显示[这里是(0,0)],开始不懂的时候,与鼠标位置老有偏差。
最后 看一看循环过程
//更新画面
FlipKEYSRC();//绿背景
DrawMap();//美莎[移动]
DrawEyes();//美莎身体
Flip();//换页
明白换页过程了么?
初始化-〉创建页面-〉BIT-> 换页处理
directdraw 也就这些内容,前田 稔很丧气的说
如果上面的内容看不懂 只有先从前田 稔的傻瓜学习法开始了,请找燕尘。
不知道现在有没有人在学习DirectDraw,我可是很辛苦,在各种压力下入门的。
如果有人原意学,我将把自己学习的过程写作教程。供大家参考[也就是说,不一定适合你]
我是使用老王的A10_战机 源程序进行学习的,没有得到老王的同意,将不能公开源码[可我一直没能和老王联系上]
我的题目是:A10_美女 ]DirectDraw[ 作成
你首先要 掌握 C++ windows编程 要非常熟识,[一知半解的话,就象我,很难有所收效]
因此,拥有以下参考书是必需的
书 名:Programming Windows程式开发设计指南(.chm)
原 作 者:Charles Petzold
译 者:余孟学
DirectDraw 中文手册.chm [老王等译(不全)]
DirectX中文手册.doc [也是老王翻译,{我找到的缺乏第十章以后的}而且!!有点问题{我拿着它几年不能入门}]
电脑游戏自己编.doc (纸书&碟)彭博 [这本书不是入门用的,但可以检测自己掌握了多少知识,并且有一些关键代码。有指导作用]
3D游戏从头编.chm 金点时空 [作者是谁?折腾完DirectDraw 就该折腾D3D了]
还有各式C++参考书资料 可是我一本书也找不到,将就用谭浩强的C语言。
下面,就由我来拆解A10代码。
|
|