DirectDraw技术及其应用

合集下载

两个小时学会DirectDraw编程

两个小时学会DirectDraw编程

result = pMyDDSFront->Blt(&rcTo, pMyDDSBack, &rcFrom, DDBLT_WAIT,NULL);
result = pMyDDSFront->BltFast( 0, 0, pMyDDSBack, &rcFrom, DDBLTFAST_SRCCOLORKEY);
DirectDrawCreate( NULL, //用当前的显示驱动
&pMyDD, NULL))
Okay, 烦人的初始化总算完了.
步骤二: 设置屏幕的显示方式.
DirectDraw 有自己的设置屏幕的方式, 而且它的屏幕模式分为"全屏"( exclusive mode)和"窗口"( normal mode). 各有各的设置方法. 设置的主要区别在于 SetCooperativeLeve的参数.
步骤三: 建立前后页(两块画板).
两块画板的好处是可以一边在一块上面画, 一边给别人看已经画好的另一块. 等这块画好了, 两块板就对调一下, 让别人看新画好的这块. 如果画的足够快, 换的足够快. 看的人就会看到动画了, 就象电影的效果一样. 我们把这叫做 Page Flipping.
DirectDraw编程需要一些背景知识:
DirectDraw是为在 Windows95/NT 下实现高速图形显示所写的程式库.
高速图形显示的基本方法是用一种叫做 Page Flipping的技术. 关于什么是 Page Flipping, 参见古技介绍.如果你 不急的话, 看到下面, 你也会看到.
{
pMyDD->Release();
pMyDD = NULL;

游戏图像引擎 DirectX Draw

游戏图像引擎 DirectX Draw

游戏图像引擎DirectX Draw简要介绍3EGame图形引擎独特的地方在于把DirectX中所有的工具封装成一个DirectX类,可以很轻松的调用里面的工具函数实现图形操作。

引擎使用DirectX7.0 中的DirectDraw功能完成。

引擎支持一种标准的图形格式BMP,另外还有相应的自定义格式支持(有附带工具),支持Alpha通道自动混合等。

DirectDraw用来处理所有和2D图形有关的显示操作。

目前的显卡上大部分都已经内置了8~64M的显存,DirectDraw可以直接读写这些显存,并利用“切换页”的方式快速显示图象,实现动画,背景的卷动,而且像镂空、半透明等效果的制作,在DirectDraw中都能用更简单的方法来完成。

在这里我们主要介绍在这个图形引擎中我们是如何实现加载,绘制图形,并且实现一定的特效的(半透明效果即Alpha混合通道)。

绘制位图功能在引擎中的实现我们是利用绘图页(Surface)配合(贴图)与翻页(flip)的方式来显示图形。

绘图页是一块显象或者暂存位图的内存,按照其功能的不同,可将它分为如下三种类型:·主绘图页(Primary Surface):显存,在主绘图页中的图形会显示在屏幕中。

·后缓冲区(Back Buffer):在后缓冲区中可以贴上位图数据,当利用翻页的方式切换至后缓冲区时,此绘图页就会变成主绘图页,显示其中的内容。

·幕后暂存区(Offscreen Plain):用来暂存要使用位图的绘图页。

通常不直接把位图贴到主绘图页中,而是先贴到后缓冲区,再利用翻页的方式,绘出要显示的位图的内容。

如下图所示:根据这一原理我们在DirectX类中封装了以下函数:相关函数介绍:1.v oid initDD(int width, int hight, HWND hwnd);这个函数完成下列工作:建立DirectDraw对象,设定协调层级,设定屏幕显示模式,建立主绘图页,连结后缓冲区,建立幕后内存区。

如何使用DirectDraw直接显示YUV视频数据

如何使用DirectDraw直接显示YUV视频数据

如何使用DirectDraw直接显示YUV视频数据1.在DirectDraw中创建YUV表面与一般表面不同的是,创建YUV表面时需要指定象素格式,并指定YUV数据的FourCC码,关于FourCC码可以参考微软MSDN站点上的说明,下面是具体的创建方法:(以YUV4:2:0格式为例,其中drawwidth和drawheight是欲显示图像的宽度和高度,以象素为单位)LPDIRECTDRAW7 lpDD; // DirectDraw 对象指针LPDIRECTDRAWSURFACE7 lpDDSPrimary; // DirectDraw 主表面指针LPDIRECTDRAWSURFACE7 lpDDSOffScr; // DirectDraw 离屏表面指针DDSURFACEDESC2 ddsd; // DirectDraw 表面描述// 创建DirectCraw对象if (DirectDrawCreateEx(NULL, (VOID**)&lpDD, IID_IDirectDraw7, NULL) != DD_OK){//MessageBox("Error Create DDraw.");return FALSE;}// 设置协作层if (lpDD->SetCooperativeLevel(hWnd,DDSCL_NORMAL | DDSCL_NOWINDOWCHANGES) != DD_OK){//MessageBox("Error Create Level.", s);return FALSE;}// 创建主表面ZeroMemory(&ddsd, sizeof(ddsd));ddsd.dwSize = sizeof(ddsd);ddsd.dwFlags = DDSD_CAPS;ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;if (lpDD->CreateSurface(&ddsd, &lpDDSPrimary, NULL) != DD_OK){//MessageBox("Error Create Primary Surface.", s);return FALSE;}LPDIRECTDRAWCLIPPER pcClipper; // Cliperif( lpDD->CreateClipper( 0, &pcClipper, NULL ) != DD_OK ) return FALSE;if( pcClipper->SetHWnd( 0, hWnd ) != DD_OK ){pcClipper->Release();return FALSE;}if( lpDDSPrimary->SetClipper( pcClipper ) != DD_OK ){pcClipper->Release();return FALSE;}// Done with clipperpcClipper->Release();// 创建YUV表面ZeroMemory(&ddsd, sizeof(ddsd));ddsd.dwSize = sizeof(ddsd);ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT;ddsd.dwWidth = drawwidth;ddsd.dwHeight = drawheight;ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);ddsd.ddpfPixelFormat.dwFlags = DDPF_FOURCC | DDPF_YUV ;ddsd.ddpfPixelFormat.dwFourCC = MAKEFOURCC('Y','V', '1', '2');ddsd.ddpfPixelFormat.dwYUVBitCount = 8;if (lpDD->CreateSurface(&ddsd, &lpDDSOffScr, NULL) != DD_OK){//MessageBox("Error Create Off Surface.", s);return FALSE;}2.将解码得到的YUV数据拷贝到YUV表面设解码得到的YUV数据的指针分别是Y,U,V, 每行数据长度为BPS,具体拷贝代码如下,这里需要特别注意每拷一行都要对写指针加ddsd.lPitch(对于Y)或ddsd.lPitch/2(对于UV):LPBYTE lpSurf = (LPBYTE)ddsd.lpSurface;LPBYTE PtrY = Y;LPBYTE PtrU = U;LPBYTE PtrV = V;do {ddRval = lpDDSOffScr->Lock(NULL,&ddsd,DDLOCK_WAIT | DDLOCK_WRITEONLY,NULL);} while(ddRval == DDERR_WASSTILLDRAWING);if(ddRval != DD_OK)return 1;// 填充离屏表面if(lpSurf){for (int i=0;i Height;i++){memcpy(lpSurf, PtrY, ddsd.dwWidth);PtrY += BpS;lpSurf += ddsd.lPitch;}for (int i=0;i Height/2;i++){memcpy(lpSurf, PtrV, ddsd.dwWidth/2);PtrV += BpS;lpSurf += ddsd.lPitch/2;}for (int i=0;i Height/2;i++){memcpy(lpSurf, PtrU, ddsd.dwWidth/2);PtrU += BpS;lpSurf += ddsd.lPitch/2;}}lpDDSOffScr->Unlock(NULL);3.YUV表面的显示现在就可以直接将YUV表面Blt到主表面或后备表面进行显示了:(设lpDDSBack为后备表面)ddRval = lpDDSBack->Blt(NULL, lpDDSOffScr, NULL,DDBLT_WAIT, NULL);这样就实现了YUV数据的显示,对比发现使用DirectDraw直接进行YUV数据显示,CPU占用率降低了一半。

DirectDraw

DirectDraw

DirectDraw⼀、DirectDraw接⼝ DirectDraw接⼝图如下: 1、IUnknown:所有COM对象都必须从这个基本接⼝派⽣ 2、IDirectDraw:这是开始使⽤DirectDraw时必须创建的主接⼝对象 3、IDirectDrawSurface:这表⽰你⽤DirectDraw创建、控制和显⽰的实际显⽰表⾯。

分两种:主显⽰表⾯(Primary Surface)和从显⽰表⾯(Secondary Surface) 4、IDirectDrawPalette:使⽤256或更少的颜⾊在视频模式下处理调⾊板,⽤于创建、加载和控制调⾊板,以及将调⾊板关联到显⽰表⾯ 5、IDirectDrawClipper:⽤于帮助剪切DirectDraw光栅和位图操作到⼀些可见显⽰表⾯的⼦集⼆、创建DirectDraw对象 HRESULT WINAPI DirectDrawCreateEx(GUID FAR *lpGUID, //全局唯⼀标识符,为NULL时表⽰系统缺省配置 LPVOID *lplpDD, //指向IDirectDraw接⼝的指针 REFIID iid, //请求的接⼝的ID IUnknown FAR *pUnkOuter //总是为NULL ); 对DirectDraw进⾏错误处理:FAILED()——检测是否失败,SUCCEEDED()——检测是否成功 例⼦:LPDIRECTDRAW7 lpdd7=null; if(FAILED(DirectDrawCreateEx(NULL,(void**)&lpdd7,IID_IDirectDraw7,NULL))){ //错误处理 }三、与Windows协作 对于DirectDraw来说,视频显⽰设备有两种模式:全屏模式(Full-screen Mode)和窗⼝模式(Windows Mode),在窗⼝模式下,DirectDraw必须更多的与Windows协作,因为其他应⽤程序可能更新它们各⾃的客户窗⼝区域。

3.设定Direct3D应用程序中的DirectDraw

3.设定Direct3D应用程序中的DirectDraw

3. 设定Direct 3D应用程序中的DirectDrawDirectDraw是Microsoft DirectX API的成员之一,用来让您直接控制显示装置的特性,如下列例子:∙主要绘图页(Primary surface),也就是您在屏幕上看到的东西所对应的内存。

∙屏幕外绘图页(Off-screen surfaces),是用来存放可以转移到可视区域的图像(包括在3D程序中的贴图)。

∙硬件迭合支持(Hardware overlay support),可以让2D图像显示在显示区上方而不会影响主要绘图页的内容。

∙深度缓冲区(Depth buffers),用来储存绘制3D景物的相关深度信息。

∙图块搬移硬件(Hardware blitter),用来作图块搬移(blitting),也就是将2D数据从一个地方复制到另一个地方的过程。

∙切页支持( Flipping-surface support,也称为page flipping ),用来在主要的可视显示绘图页和内存(后缓冲区,back buffer)中的多个检视(views)间切换,以避免屏幕画面切割(tearing,这个会在后面的章节中说明)或是在画面间闪烁。

∙∙立体模式支持,意谓左眼看到一个影像,而右眼看到另一种不同的影像。

∙在窗口或全屏幕模式下的裁切(clipping)。

整体来说,DirectDraw采用了一种与装置无关的作法来存取显示装置,同时也是可处理所有2D绘图指令的DirectX API。

它也是Direct3D的基础,所以即使是「纯3D」的程序也需要用到DirectDraw。

DirectDraw会管理它所建立的所有对象并且记录已(未)配置的资源。

它也会控制下列特性:∙预设的色彩键(color key),这是用来建立透明区,就如同电影中将屏幕变蓝一般。

∙硬件显示模式,包括系统执行中的分辨率、色彩深度及更新频率。

预设调色盘(可用的颜色),是当主要绘图页是在每个像素8位的模式下时。

DirectDraw概述

DirectDraw概述

1概述DirectX是Microsoft为软件开发人员提供的一套精心设计的接口,用于开发高性能、实时的应用程序。

它以COM(comp onent object modal)为基本结构[1],位于硬件和软件之间,像gdi(graphics device interface)一样提供了硬件无关的API(a pplication programming interface)接口;它和GDI有一重要不同点:DirectX是一套底层的API接口,它提供了直接访问硬件的能力,使得DirectX应用程序能充分发挥硬件的威力。

DirectDraw是DirectX中提供直接操纵显存、执行硬件映射、硬件覆盖及切换显示页等功能的组件。

它不但兼容已有的Wi ndows应用程序和驱动程序,而且还兼容许多显示卡:从简单的SVGA到支持图像剪裁、拉伸和非RGB格式图像的高档显示卡。

DirectDrawHAL(hardware-abstraction layer)抽象了显示卡的硬件功能,以设备无关的方式提供了一些以前是设备相关的功能,如多显示页技术、访问并控制显示卡映射寄存器、支持3DZ-Buffer、支持Z-order硬件覆盖、访问图像拉伸硬件,以及同时访问标准显存和控制显存。

正因为DirectDraw有这些优点,现在许多基于Windows95/98/NT的游戏程序都使用了Direct Draw;而它的设备无关性使开发者摆脱了繁重的显示卡接口工作,集中精力实现程序的主要功能。

DirectX中的DDraw.dll实现了DirectDraw所需要的函数、对象及其接口。

下面先介绍DirectDraw中主要的函数、对象和接口,然后再说明DirectDraw的使用方法。

2DirectDraw中的函数、对象和接口简介DirectDraw包括一个代表显示卡的主对象DirectDraw,由函数DirectDrawCreate创建,实现接口IDirectDraw和IDirectD raw2。

DirectDraw技术在模拟跟踪系统中的应用

DirectDraw技术在模拟跟踪系统中的应用
陆斌;齐强
【期刊名称】《计算机技术与发展》
【年(卷),期】2003(013)012
【摘要】DirectDraw是基于Windows操作系统的高级多媒体接口,而在利用多媒体技术模拟光电跟踪的训练系统程序中,需要高质量的动画效果.文中介绍了在模拟跟踪系统中利用DirectDraw技术实现高质量跟踪动画的方法和基本过程,详细论述了各过程中需解决的问题及相应的方法,并根据该方法实现了应用于模拟某观测设备跟踪过程的多媒体动画结果,解决了在模拟跟踪过程中存在的实时图像处理关键技术问题.
【总页数】3页(P79-81)
【作者】陆斌;齐强
【作者单位】海军航空工程学院,自动控制系,山东,烟台,264001;海军航空工程学院,机械工程系,山东,烟台,264001
【正文语种】中文
【中图分类】TN911.73
【相关文献】
1.精细数值模拟技术在海上方案实施跟踪中的应用 [J], 彭道贵
2.科技创新焕发模拟警用集群通信系统新活力——记同频同播等技术在模拟警用集群中的应用 [J], 许路;段全苹
3.DirectDraw与Flash技术在雷达模拟器设计中的应用 [J], 方伟;何友;欧阳文
4.DirectDraw技术在快视显示系统中的应用 [J], 张华琳;高升;马茜;王士成
5.纤维跟踪技术在模拟显示人脑联络纤维中的应用 [J], 何敬振;赵斌;彭红娟;王海燕
因版权原因,仅展示原文概要,查看原文内容请购买。

DirectX 5.0游戏编程指南之DirectDraw篇

DirectX 5.0游戏编程指南之DirectDraw篇1998-08-25 吴佳鲜、朱春喜目录1 配置DirectX SDK2 DirectDraw实例3 创建动画4 使用覆盖表面5 其它的DirectDraw范例--------------------------------------------------------------------------------DirectX是为Visual C++的用户准备的,因此要编制DirectDraw游戏程序,最好对VC++要有一定的了解。

不愿意使用VC的用户也可以利用Arakelian Soft公司开发的专门针对Visual Basic5.0用户的ActiveX控件Direc tStudio98或Tegosoft公司的TegoSoft ActiveX for Visual Basic。

不过,如果想充分发挥DirectX的性能,并且希望保持程序的兼容,那么最好还是使用Visual C++。

为了叙述方便,假定已经安装了DirectX5.0 SDK 和Visual C++ 5.0。

其目录分别是C:\DX5SDK和C:\ProgramFiles\DevStudio。

如果你使用了另一种编译器或安装到了其它目录下,必须将下面的例子做适当的修改才能运行。

有人安装了DirectX SDK后却不知怎样使用,因为它是基于Visual C++的,却没有一个界面友好的集成开发环境,因此必须对Visual C++进行适当的配制。

1、配置DirectX SDK1.1 配置Microsoft Developer Studio为了编译DirectX SDK提供的例子,需要打开一个新的Project Workspace,插入适当的文件,设置环境变量使得编译器能够找到需要的链接库和包含文件,下面描述了设置的全部过程。

启动Microsoft Developer Studio,安装下述步骤创建工程·在File菜单,选择New·在New对话框中选择Project中的Win32 Application·在Project Name输入DDEX1·在Location文本框输入放置工程文件的位置,点OK按钮·一个新的DDEX1 Classes文件夹就出现在workspace窗口的左边了创建了工程后,需要使用如下步骤向工程插入适当的文件·在Project菜单选择Add to Project | Files·浏览到C:\DX5SDK\SDK\SAMPLES\DDEX1目录,选择所有的文件·选择OK,该目录下的DDEX1.CPP、DDEX1.RC、RESOURCE.H就加入到工程了然后设置包含文件的路径·在Tools菜单,选择Options,就弹出Options对话框·选择Directories,在Show Directories For列表框选择Include files·在Directories列表框双击列表底部的空白行,输入C:\DX5SDK\SDK\INC·同样再加入另一个路径C:\DX5SDK\SDK\SAMPLES\MISC·选择OK按钮设置链接库目录·在Show Directories For列表框选择Library files·在Directories:列表框双击底部空白行,输入C:\DX5SDK\SDK\LIB·单击OK按钮最后设置建立应用程序时链接的模块·在Project菜单单击Settings·选择Link·在Category下拉框选择General·在Object/Library模块列表框加入Ddraw.lib和Winmm.lib·单击OK1.2 配制NMAKE路径有时候命令行的方式比集成环境更加方便,所以许多有经验的程序员更愿意用命令行的方式来建立应用程序。

基于MFC的DirectDraw高速图形绘制方法与应用

基予醚残:懿强『ec囝f箍w离速蚕形绘麓方法与应麓
基于M FC的Di rectDfaw高速图形绘制方法与应用
Research On ReaI—t.rne Drawing Of COmpIe×Graphics Based On DirectDr£1w MFC
陈 静 程菲菲 王明辉(武汉理工大学治et0潞w,G0l,Real—tlme,MFC
在实时性要求高的工业控制环境中,使用Wjndows提供的 GDI进行图形绘制,通常会出现闪烁及丢帧现象。为消除闪烁, 霹使震0}滗e£0f8w戆表存终瑟方式,然磊将宠痰瓣蚕形遴避位 块传送拷贝到实际的显示设备。
目前,大部分使用VC进行D.rectDraw编程均是錾于 Win32的。本文提出了基于MFC的DirectDraw编程方法,并给 爨复杂匿形绘潮瓣应震实鲷。
本文通过使用基于MFC的DirectDraw编程方法进行复杂 图形的实时绘制,已在震动信号检测系统中成功应用,得到的图 形平滑、稳定,效果良好。
参考文献 [1]David J.Krug¨nski etc(希望图书创作室)MsuaI C++6.0技术内
幕【M】.北京:北京希望电子出版社,1999 [2]柳青松.基于DirectDraw的计算机图像显示[J].火控雷达技术,
(下转第镐簧)
在LabVIEW中动态配置ODBC数据源的方法
glnes】 【HKEY—LOCAL—MACHINBSOFn^/ARE:\ODBc\oDBC.INl\demo\En— ginegUet] ”Imp¨cilCommitSync”=” ”Ma×BufferSize”=dword:00000800
摘要
在工藏控裁琢境下采蔗G0l内存铃圈方式可以加速銎影绘爨,钽砖复杂躅彩砖翥速绘裁效暴并不理憨。提出娃M℃ 编程来实琉基于Di僦t0确w实时霉影绘制方法,能产嫩快速、平稳的复杂蘑影,并鼠通过一令复杂灏影绘稠的囊镄,详细讨

DirectDraw技术及其应用

示模式 设置 为6 0 4 0 2 6色 ( 位 ): 4 x8x5 8
HRE SUL dv I P RE T AW DD; Al a yce t d Td ra: DI C DR L I p / r d r ae / e
d ra=lDD一> e Dipa M o e6 04 08; (dv l DD dv l p S t sl y d (4 ,8 ,)fd ra== i
id ra= D — ) f dv l= D OK ( 独 占模 式设 置成 功}l 独 占模 式设 es e 置 失败)
3 、改变显 示模式
在 设置 了应 用程 序 的行 为 方式 后 ,你 可 以用 Ii cD a : Dr t rw: e S t i y d 方 法来 改变 显示 分辨 率 。选择 一 个合 适的 分辨 eDs a Mo e p 率对 提 高显 示 速度 是 极 其重 要 的。 下 面的 例 子说 明 了如何 将 显
8 4
TCN LG 技 应 EH0O Y 术 用
D cD a i t rw技术及其应 用 r e
王 彦 朝 ( IiБайду номын сангаас四JV 范大学数 学与软件科学学院 I ̄
四川 6 0 6 1 0 6)
摘要 :Di cX技 术在 现在的 多媒体计 算机 中有 着不可或缺的地位 ,是大 多数 多媒 体软件和 游戏软件所采 用的必不可 rt e 少的开发_ 具 ,其  ̄Di c a T - a r t w在Di c e Dr r t 占主要地位 ,是 多媒体 图形应 用基础 ,也越 来越 受到 游戏 开发者 的青睐。也是 e X ̄ 各种 图形处理软件所必不 可少的使 用工具 。随着Di cX ̄本的改进 ,其 功能也越 来越 强大 ,本文从入 门级 别向大家介绍 rt e D rc a i t w的基础的程序编写和函数 的调 用,希望读者对Di c e Dr r t 术有更深的 了解。 e X技 关键词:Di c a r t w;Di c a Cr t 数 ;面对象 ;绘 图 e Dr r t w ee e Dr a
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ddrval=IpDD一>SetDisplayMode(640,480.8);if(ddrval==DD
—OK){//显示模式改变成功}else{//显示模式改变失败}
4、创建可切换面对象
在设置了显示模式后,你必须创建面对象以放置应用程序 的画面。在独占模式下,你可以创建可翻转切换的面对象,而 在普通窗口模式下,则只能创建可Blit的面对象。创建可切换面 对象需要遵循以下步骤: 如下列代码那样,在DDSURFACEDESC结构中定义可切换 面对象所需要的属性: //创建一个拥有一个后台缓存的主面对象
84

TEcHN。L。GY
技术应用
DirectDraw技术及其应用
王彦朝 (四川师范大学数学与软件科学学院四川
少的开发工具,其o/"DirectDraw在DirectX
610066)
摘要:DirectX技术在现在的多媒体计算机中有着不可或缺的地位,是大多数多媒体软件和游戏软件所采用的必不可 占主要地位,是多媒体图形应用基础,也越来越受到游戏开发者的青昧。也是
方法: d d
r V a
DD—OK){//IPDD指向一个有效的DirectDraw对象}eIse{// DirectDraw对象创建失败}



>CreateSurface(&ddsd.&lpDDSPrimary.NULL);
2、决定应用程序的行为方式
DirectDraw既可以在标准的窗口方式下工作,也可以用 独占性的全屏方式工作。在全屏方式下你可以改变显示分辨 率,并且程序的运行速度也比第一种要快得多。要设置为独占 模式就需要调用函数SetCooperativeLevel,并将参数dwFlags
指向后台缓存}else
(下转”9页cAT.。N F。RuM
教育论坛

1 1 9
。高利害性。所带来的负面效果远远超出了预期,并对评估 工作本身也带来了极大的消极影响。鉴于此,降低评估结论的 。高利害性”成为众多学者的共识。对于审计和认证模式的评 估,评估结论只设。通过”、。不通过”和“暂缓通过”,选 优模式的评估可以只评。优秀”,也可以和首轮一样分为四 等,但要严格限制优良的比例。同时为了激励先进,使高校对 评估有较高的参与积极性,保持适度的压力,可以对评估中取 得优良结论的和特色突出、社会服务效果好的高校给予奖励, 包括在教育资源(如招生计划)的分配上给予适度的倾斜,而 对未通过评估的高校,在给出时间进行整改的同时,适度地限 制教育资源的分配。 4.采用更加科学合理的评估方法。专家集中进校考察的方 法,工作的有效时间仅有短短的几天时间,不仅在时间上难以 保证专家对高校情况的准确、全面的掌握,而且对高校正常的 教学秩序冲击较大,有必要将教学评估从突击性的工作转变成 常态性的工作。一是建立起教学工作状态数据库。利用信息技 术实时采集各高校教学工作状态的数据,供专家查阅。二是灵 活地安排专家进校考察的人数和时间,尽可能地了解高校在正 常状态下的真实情况,专家进校考察的重点放在那些难以定量 测评的指标上。三是国家教育部和各省教育厅进行职责分工, 对不同类型的高校组织开展评估工作,对各省教育厅组织的评 估,教育部有进行抽查的权利。四是灵活安排评估周期,根据 不同的高校的办学历史和水平,采用不同的评估周期。
评估,2008(1 1).
三、对军队院校教学工作评价的启示
自2006年开始,总部主管部门在借鉴地方高校本科教学工 作水平评估模式的基础上,开始了5年一轮的军队院校教学工 作评价。教学工作评价对于各院校重视教学工作、规范教学管 理、改善硬件条件、提高教学质量发挥了重要的作用。但地方 高校评估工作中出现的问题,在军校教学工作评价中或多或少 地也出现。通过教学评估提高教学质量已经成为当今世界各国 教育主管部门的通行做法,同样教学工作评价也是总部主管部 门提高军校教育质量重要的、有效的手段,因此,在进一步完 善的基础上,必须要加强军队院校的教学工作评价。 1.加强对军队院校教学工作评价的研究。军队院校与地方 高校相比,教学工作既有相同的普遍性规律,又有其独有的特 殊性的规律,因此军队院校教学工作评价既要充分借鉴地方高 校本科教学评估的成功经验,又要与军队院校的实际情况相结 合。本轮教学工作评价已经临近尾声,及时总结评价工作的得 失,加强军队院校教学工作评价的研究,为今后评价工作的开 展打好基础已迫在眉睫。当前应当重点开展国内外高等教育教 学评估的发展趋势研究、院校分类研究、教学工作评价标准体 系研究、评估模式方法研究等。 2.制定不同类型军校的评价指标体系。军队院校数量虽然
各种图形处理软件所越不可少的使用工具。随着DirectX崩t本的改进,其功能也越来越强大,本文从入门级剐向大家介绍 DirectDraw的基础的程序编写和函数的调用,希望读者对DirectX技术有更深的了解。 关键词:DirectDraw;DirectDrawCreateflu数;面对象;绘图 Microsoft开发DirectX的初衷就是希望能在Windows操作系 统下开发出高性能的图形应用程序(尤其是游戏)。现在利用 DirectX技术,各个软件开发商可以轻而易举地创建包括高性能 的平面和三维图形、声音混合与倒播,及Internet多媒体播放支 持体系的多种应用程序。近年来,越来越多的顶尖游戏都受益 于Direct)(技术。 DirectX包括以下五个部分:DCI的最新版本DirectDraw, 它允许应用程序访问硬件和显示缓冲区:Di rectSoUnd是声 响合成和声卡的接口,用于数字音频的合成和回放的APf; DirectPlay是一组开发多用户游戏的接口:Direct3D提供了一组 完全的3D图形系统接口:Directlnput是一组支持基于Windows 硬件输入的API和驱动程序。 本文将主要介绍第一部分,带你进行基础的Di rectX编 程。Di rectDraw是Di rectXSDK的一个部分,它支持直接操作 显存并支持硬件blitter、硬件叠加和前后台切换。DirectDraw 在提供这些功能的同时依然保持了和现有Microsoft Windows 应用程序和设备驱动程序的兼容性。Di rectDraw的概念类似 于“直接写屏”。它的API是按照COM(Component Object Model)协议设计的接口。DirectDraw包含四个接口对象: lDirectDraw、IDirectDrawSurface、IDirectDrawPalette和 IDirectDrawClipper。要使用DirectDraw,你必须首先创建一 个Di rectDraw对象的实例,它代表着显示设备,然后你才可 以通过这个接口的方法来操作对象。另外你还需要创建一个或 多个DirectDrawSurface的实例来显示画面,下面就介绍应用 DirectDraw技术最基本的方法和步骤:
HRESULT ddrvaI:LPDIRECTDRAW lpDD;//Already DirectDrawCreate
created by
ddrval=IpDD一>SetCooperativeLevel(hwnd,DDSCL- EXCLUSIVE DDSCL-FULLSCREEN);
if(ddrval==DD—OK}{//独占模式设置成功)else{//独占模式设 置失贝;【}
为NULL。
下面的例子解释了如何创建一个DirectDraw对象,并如何 判断创建是否成功:
ddrval=DirectDrawCreate(NULL.&IpDD.NULL);if(ddrval==
DDSURFACEDESC是一个非常复杂的结构,但并非每个成 员都会用到。成员dwFlags 负责指定哪些成员是需要的。本例通过使DDSD—CAPS和 DDSD—BACKBUFFERCOUNT两个标志置位指定7ddsCaps和 dwBackBufferCount有效。而这两个成员分别说明了创建一个 复杂的可切换的主面对象和后台缓存数为1。 在填写完DDSURFACEDESC结构后,可以通过利用一个指 向DirectDraw对象的指针来调用IDirectDraw::CreateSurface的
d d
P S.d
W C


S=D D

C A P S—
SetCooDerativeLeveI的第一个参数是和DirectDraw相连的窗口 对象。下面的例子说明了IDirectDraw::SetCooDerativeLeveI的 使用方法:
BACKBUFFER;ddrvaI=IpDDSPrimary一>GetAttachedSurface( &ddcaps.&lpDDSBack);if(ddrval==DD—OK){//IpDDSBack
不多,但每所院校所承担的培养任务、院校规模、学科分布、 发展的历史等干差万别,同样有必要对军校进行科学的分类, 制定出不同的评价指标体系,评价侧重点应有所不同,但总体 评价的重点应当是各军校教学质量保障体系的建立和运行的有 效性上。 3.采用更加灵活的评价方式。考虑到教学质量建设需要一 定的时间,可以将教学工作评价的周期延长到6—8年。在一个评 价周期内,根据不同院校的类型,开展1—2次专项评价和1次整 体评价。在评价的组织方式上,可以采取全军评价和各大单位 评价相结合的形式,充分调动各级主管部门的积极性。总参军 训部作为全军院校的主管部门,随时对各大单位的评价结果进 行抽查。 4.强化信息技术手段在教学评价中的应用。为使教学工作 评价常态化,也使主管机关随时了解和掌握各院校教学工作的 实际情况,有必要开展军队院校教学工作评价数据库的建设, 院校每半年将教学工作评价的基本数据上报总部主管部门。评 价专家可以通过数据库随时掌握各院校的教学状态,避免因时 间紧张而对院校情况了解不够准确的情况发生。专家宜采取集 中和分散、随机相结合的方式到各院校考察,以分散、随机的 方式为主,重点放在难以定量评价的指标上,这样更能够准确 地掌握各院校平时的教学质量情况。 5.充分发挥军校和部队在教学工作评价中的作用。将教学 工作评价重点放在各院校教学质量保障体系的建立和运行的有 效性上,有助于各院校将工作重点放在日常教学质量的监督和 管理上,强化院校内部教学工作评价。为了提高各院校参与教 学工作评价的积极性,避免出现过度的“应激反应”,也应当 降低评价结果的“高利害性”,在严格控制优良比例的基础上, 可以适度地奖励教学质量比较突出的院校,鼓励各院校自主地 提高教学质量。部队作为院校培养人才的使用者,对院校教学 质量的高低有着切身的体会,应当加强部队评价在教学工作评 价中的权重比例。为避免出现偏差,总部应统一组织,利用信 息技术手段,结合每年的总结、考核、奖励和重大活动,对各 院校的毕业学员在部队的表现进行跟踪,获得最真实的结论。H 参考文献 …1余远富.对高校教学工作水平评估的若干思考明.高教发展与
相关文档
最新文档