GDI屏幕绘图基础(三维图形).doc

GDI屏幕绘图基础(三维图形).doc

ID:49408046

大小:270.00 KB

页数:23页

时间:2020-03-01

GDI屏幕绘图基础(三维图形).doc_第1页
GDI屏幕绘图基础(三维图形).doc_第2页
GDI屏幕绘图基础(三维图形).doc_第3页
GDI屏幕绘图基础(三维图形).doc_第4页
GDI屏幕绘图基础(三维图形).doc_第5页
资源描述:

《GDI屏幕绘图基础(三维图形).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、GDI屏幕绘图基础(三维图形)用GDI函数在屏幕上绘制三维图形,要达到有真实感的良形(消隐+光照或二维贴图)外带能实现动画效果。这一讲主要用到两个GDI函数:创建位图函数和位图填充画刷。创建位图隐函数:CreateBitmap(int,int,UINT,UINT,CONSTVOID*);这个函数共有5个参数:第一个参数:表示将要创建的位图的宽度第二个参数:表示将要创建的位图的高度第三个参数:表示将要创建的位图的颜色类型(单色)第四个参数:表示将要创建的位图的颜色位数(32位)第五个参数:表示将要创建的位图的数据源(字节型)创建用位图填充的画刷函数:CreatePatternBrush

2、(HBITMAP);为什么只用这两个函数,主要是为了保持绘图的速度,大家知道要绘制三维真实感图形都要对像素进行操作,如果用GDI中操作像素函数来绘制在速度上会稍慢些。图1、二维场景屏幕截图(GDI屏幕绘图)上图是调用GDI函数绘制的一个三维场景:可以对整个场景区域漫游,一般能达到刷屏7次/秒(绘制的东西多的情况下b下面用传统的GDI函数编程实现一个类似于写屏的画图环境,直接对像素进行操作。自建库:UserDraw(ud.h)/*ud.h(c)UserDraw(ud)*/#ifndefUD_H#defineUD_H#includevwindows.h>#include

3、#includellllllllllllllllllllllllllllllllllllllllllllltypedefstructUCOLOR{UCHARb;UCHARg;UCHARr;UCHARa;}UCOLOR;typedefstructUBITMAP{UCOLOR*data;intwidth;intheight;}UBITMAP;llllllllllllllllllllllllllllllllllllllllllltypedefstructPOINT3F{floatx;floaty;floatz;}POINT3F;typedefstructPEDGE{POI

4、NT3Fp1;P0INT3Fp2;intMaxY;intMinY;floatdx;floatd乙}PEDGE;typedefstructPOLY{PEDGEedge[100];泊tMaxY;intMinY;}POLY;llllllllllllllllllllllllllllllllllllllllUBITMAP*_user_bitmap=O;int*_user_depth_buffer=O;HDC_user_hdc;UCOLOR_user_color;UCOLORuserbcolor;TCHAR*udClassName="UserClassName,';TCHAR*udWindowN

5、ame=,,UserDrawH;int_user_window_width=1000;int_user_window_height=600;int_user_depth_test=O;〃////////////////////////////////////〃/voidEnableDepthTest(){_user_depth_test=1;}voidDisableDepthTest(){_user_depth_test=O;}voidGetHdc(HDChdc){_user_hdc=hdc;}voidViewport(intwidth,intheight){if(_user_bit

6、map){delete[]_user_bitmap->data;_user_bitmap->data=O;delete_user_bitmap;}_user_bitmap=newUBITMAP;_user_bitmap->width=width;_user_bitmap->height=height;_user_bitmap->data=newUCOLOR[width*height];if(_user_depth_buffer)deleteQ_user_depth_buffe「;_user_depth_buffer=newint[width*height];}voidFlush(){

7、HBITMAPhbitmap=CreateBitmap(_user_bitmap->width,_user_bitmap->height,1,32,_user_bitmap->data);HBRUSHhbrush=CreatePatternBrush(hbitmap);SelectObject(_user_hdc,hbrush);Rectangle(_use「_hdc,O,O,_use「_bitmap・>width,_user_bitmap〉height)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。