高性能Windows图形开发库WinG_第1页
高性能Windows图形开发库WinG_第2页
高性能Windows图形开发库WinG_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、高性能Windows图形开发库WinG摘要该文首先概述高性能inds图形开发库inG,然后讲解inG的一些特点及充分发挥inG性能所必须遵循的十条原那么,最后举例说明其开发方法。一、概述在inds下,由于其GDI设备无关性、窗口环境、缺乏通用图形库等限制影响了图形速度。图形速度慢成为选择inds作为游戏平台的最大障碍。inds95在保存inds的最大优点设备无关性的同时,在in32API中新增一个32位调用reateDIBSetin,使得图形速度得到很大进步。irsft公司意识到图形速度对于高质量软件的重要性,提供了inG(发音inGee,其中G代表游戏(Gae)图形库。inG是为inds3.

2、1、indsfrrkgrups3.11、inds95和indsNT设计的一种优化的高性能图形库,运行于386以上的处理器。inG能在inds环境中提供与DS环境相当的游戏图形性能。程序员可以直接将内存中的设备无关位图(DIB)传送到屏幕,并且提供抖动(halftning)API,利用标准irsft抖动调色板支持对真彩色的仿真。二、inGD和APIinG提供一种新型设备描绘表inGD,其用法类似于其它设备描绘表,不同的是,程序员可以获取直接指向inGD绘图面、BITAPINFHEADER和颜色表的指针,还可以创立和选择新的绘图面或修改现有绘图面的颜色表。应用程序可以创立一个inGD和创立一个或多

3、个inGBitap用于绘图。一旦当前帧绘图、DIB组织、Sprite(精灵)组织完成后,就可将inGD缓冲区拷贝到屏幕。这种双缓冲区构造减少了闪烁,使屏幕更新更平滑。inGAPI包含如附表所示的函数和类型。附表inGD不是调色板设备,是RGB设备。使用inGSetDIBlrTable,而不是SeletPalette修改设备的颜色表。三、inG调色板管理inds调色板管理器用于管理多个应用程序对同一个系统调色板的使用恳求。它给每个应用程序分配一个虚拟256色的逻辑调色板,并在必要时将逻辑调色板中的颜色转换为系统调色板中的颜色。所谓对等(Identify)调色板,就是一个与当前系统调色板准确(1:

4、1)匹配的逻辑调色板。它不需要进展调色板转换,因此将inGD传送到屏幕上时使用对等调色板能大大进步传送速度。抖动调色板是一个对等调色板,其中包含的颜色是经过精心挑选的,并进展了优化使得在8位设备上通过抖动模拟真彩色。应用程序可选取该调色板并在显示设备描绘表中实现,以便利用inG提供的抖动技术。inG图形库提供两个支持抖动的API:inGreateHalftnePalette和inGreateHalftneBrush,利用它们可在8位设备上仿真出24位真彩色。四、inG的DIB方向2.自上而下DIB其保存方向与大多数DIB一样,内存中的第一扫描线对应于图像的第一行。此时BITAPINFHEADE

5、R构造的成员biHEIght为负值。对于8位自上而下DIB,屏幕上像素(X,Y)在内存中的地址计算为:pPixelXY=DibAddr+Y*DibidthBytes+X.五、充分发挥inG性能方法为了最大限度地发挥inds环境下的inG的块传送性能,要求:取出单色图形调试卡和拆接网络连接器;保存inGBitap外表指针和BITAPINF;防止重复GDI调用;专用函数可能比GDI函数执行速度快;对任何函数都要测试其执行速度;不要缩放位图;不要进展块传递;不要进展剪切操作;使用对等调色板;使用推荐的DIB格式。六、应用实例下面的例子讲解如何利用inG图形库在inds95下显示真彩色位图(24位)。

6、利用Visual+2.0编程。首先创立工程文件ing32.ak,设置Link加ing32.lib库。详细inG图形库和本例子完好源程序可与作者联络。首先选择Tls|ptins.菜单项,再选择Diretries命令。在ShDiretriesfr下拉框中选择Inludefiles,增加目录:inginlude;选择Libraryfiles,增加目录:inglib;选择Exeutablefiles,增加目录:ingbin。选择Prjet|Settings.菜单项,再选择Link命令。在bjet/Librarydules编辑框中参加连接库ing32.lib。strutBITAPINFHEADERHea

7、der;RGBQUADalrs256;Inf;ing32Vie:ing32Vie()转贴于论文联盟.ll.Inf.Header.biSize=sizef(BITAPINFHEADER);Inf.Header.biidth=176;Inf.Header.biHEight=144;Inf.Header.biPlanes=1L;Inf.Header.biBitunt=24L;Inf.Header.bipressin=0L;Inf.Header.biSizEIage=(lng)(176L*144L*3L);Inf.Header.biXPelsPereter=0;Inf.Header.biYPelsPe

8、reter=0;Inf.Header.bilrUsed=0;Inf.Header.bilrIprtant=0;hBitsSr=:GlbalAll(GHND,(lng)(176L*144L*3L);pBitsSr=(LPSTR):GlbalLk(hBitsSr);ing32Vie:ing32Vie():GlbalUnlk(hBitsSr);:GlbalFree(hBitsSr);viding32Vie:nPaint()PaintDd(this);vidfar*pBits;hpalApp=inGreateHalftnePalette();PDIBpurrentDIB=DibpenFile(iss2

9、56.bp);HDinGD=inGreateD();Inf.Header.biSize=sizef(BITAPINFHEADER);Inf.Header.biidth=Dibidth(purrentDIB);Inf.Header.biHeight=DibHeight(purrentDIB);HBITAPinGBitap=inGreateBitap(inGD,(BITAPINFfar*)Inf,pBits);inGBitap=SeletBitap(inGD,inGBitap);HPALETTEldPalette=:SeletPalette(d.-hD,hpalApp,FALSE);:Realiz

10、ePalette(d.-hD);HPALETTEinGPalette=inGreateHalftnePalette();HPALETTEldinGPalette=:SeletPalette(inGD,inGPalette,FALSE);:RealizePalette(inGD);:StrethDIBits(inGD,0,0,Dibidth(purrentDIB),DibHeight(purrentDIB),0,0,Dibidth(purrentDIB),DibHeight(purrentDIB),DibPtr(purrentDIB),DibInf(purrentDIB),DIB-RGB-LRS,SRPY);:SeletPalette(inGD,ldinGPalette,FALSE);:Deletebjet(inGPalette);intidth=Dibidth(purrentDIB);intHeight=DibHeight(purrentDIB);inGStrethBlt(d.-hD,0,0,idth,Height,inGD,0,0,Dibidth(purrentDIB),DibHeight(purrentDIB);:SeletPalette(d.-hD,ldPalette,FALSE);:SeletPalette(inGD,ldPalette,FALSE);:Del

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论