WorldWind源码剖析系列:绘制参数类DrawArgs

绘制参数类DrawArgs主要对绘制时需要的对象如:设备对象Microsoft.DirectX.Direct3D.Device、Microsoft.DirectX.Direct3D.Font字体对象、相机对象CameraBase、星球对象World、下载队列对象DownloadQueue、程序插件集合类对象WorldWind.Widgets.RootWidget、GDI+的图形对象System.Drawing.Graphics、鼠标位置对象System.Drawing.Point、待绘制的位图对象System.Drawing.Bitmap等进行了封装。其类图结构如下所示:

 

在Windows系统下运行的Direct3D程序的基本结构非常简单清晰,如下图所示。它主要包含五个步骤:(1)创建一个图形渲染窗口;(2)初始化Direct3D,包括创建Direct3D对象、Direct3D设备对象以及要渲染的图形对象;(3)消息循环;(4)渲染图形;(5)清除在初始化时创建的所有Direct3D对象和图形对象。其中,消息循环和图形渲染不断进行。如果消息队列中有消息传入,则程序先处理消息,然后再渲染图形,如果没有则一直渲染图形(参见《DirectX游戏编程基础教程》一书)。

 

Direct3D程序的基本结构

DrawArgs类完成了初始化Direct3D的工作,包括创建Direct3D对象、Direct3D设备对象以及要渲染的图形对象。

该类主要定义以下这些函数完成上面提到的相应功能的:

构造函数public DrawArgs( Device device, System.Windows.Forms.Control parentForm )、初始化引用private void InitializeReference()、设备重置函数private void OnDeviceReset(object sender, EventArgs e)、开始绘制函数public void BeginRender()、结束绘制函数public void EndRender()、将后台缓冲区数据及时呈现到前台缓冲区去绘制函数public void Present()、创建字体函数public Font CreateFont( string familyName, float emSize )、更新鼠标状态函数public void UpdateMouseCursor(System.Windows.Forms.Control parent)、以及使用多数硬件系统都提供的获取高精度计时器的函数P erformanceTimer.QueryPerformanceCounter( ref curTicks )(参见《精通C#游戏编程》一书)。

原文地址:https://www.cnblogs.com/rainbow70626/p/4550702.html