用于在一个存储桶绘制系统中确保向后兼容的方法和装置的制作方法

文档序号:6640529阅读:142来源:国知局
专利名称:用于在一个存储桶绘制系统中确保向后兼容的方法和装置的制作方法
技术领域
本发明的技术领域这个发明一般涉及图像处理技术,而且尤其涉及在一个图形系统中的绘制技术。
本发明的背景技术由于计算机技术持续迅速发展,计算机用户要求就图像处理速度和图像逼真度而言提高了的图像质量。然而,产生真实的交互式和逼真的视觉效应的成本持续保持抑制性的高。因此,正在开发不同的图像处理技术和设计以试图调和用户需求和所期望的低成本。
更具体地说,一些努力已经集中在一种改进的绘制技术上,其试图使用比一种传统绘制技术小的工作存储器。这样一种改进的技术是存储桶绘制。在一个传统的绘制方案中,需要对用于一整个屏幕的帧缓存数据及/或深度缓存的随机访问。帧缓存是指被保留用于保持发送到屏幕的完整位映射图像的一部分存储器,而深度缓存(在一些文献中也称为Z缓存)是指被保留用于保持该位映射图像的深度信息的一部分存储器。为了处理在这样一个位映射图像中的信息数量并且仍然实现某些交互式视觉效果,使用传统绘制方案的一个图形系统经常使用一个大的、同时快速的存储器子系统作为它的帧和深度缓存。快速存储器的某些例子是,但不局限于,视频随机存取存储器(VRAM)和动态随机存取存储器(DRAM)。更重要的是,保存在这种快速存储器子系统中的数据被认为是外部可见的,这是因为在该传统图形系统上操作的图形应用能够随意地直接访问该数据。
在另一方面,存储桶绘制方法仅仅需要随机访问一个单一平铺部分,或者整个屏幕的一部分。与传统图形系统的上述存储器子系统相比,存储来自于这个单一平铺部分的信息所需要的存储器子系统很可能较小、更快和花费较少。因此,并不是在外部可见的帧及/或深度缓存中保持数据,应用了所描述的以上较小存储器子系统的一个存储桶绘制图形系统的一个实施例在该系统内保持它的数据。
虽然与传统的图形系统相比,这样一个存储桶绘制图形系统可以以一个较低的成本产生较好的性能,但是该存储桶绘制图形系统对依赖于外部可见的存储数据的某些现有图形应用和应用编程接口(在下文中称为API)具有有限的支持。贯穿这个公开,一个“现有的图形应用”是指一个被设计成能在存在于所描述的存储桶绘制图形系统存在之前的任何图形系统上正确运行和执行的图形应用。以下示例进一步说明了不兼容问题。特别地,一个现有的图形应用可以发布一个请求以通过一个API锁定帧缓存及/或深度缓存,其已经被设计为假定能直接存取该帧缓存及/或深度缓存。由于描述的存储桶绘制图形系统不支持外部可见的帧缓存,所以该锁定请求失败了,而且很可能在该应用的后续操作中导致错误。如已经证明的那样,在现有的图形应用和所描述的存储桶绘制图形系统之间将存在可能的不兼容性,除非这些现有的图形应用被重新设计成以某种方式消除这样的锁定操作,或者API被修改以容纳一个新的结构。
此外,即使该存储桶绘制技术经常在一个传统的绘制方案上提供了改善的性能,但是在其中一个图形应用选择了依赖于对外部可见缓存的访问的情况中,情况又反过来了。当在一个帧内出现锁定操作的多个请求时,会出现一个这样的情况。
如已经表明的那样,为了继续支持现有的图形应用以及进一步改进所描述的存储桶绘制技术,需要一种方法和装置。
发明概述公开了一种绘制一个图像的方法和装置。
在一个实施例中,一个图形系统具有一个切换检测器,其在该图形系统中检测一个切换条件。该图形系统还具有一个绘制块,其依据检测到的切换条件绘制多个层。
附图简要说明本发明通过示例进行了说明,且不局限于附图中的图表,在附图中类似的附图标记指示类似的单元,其中包含

图1说明了一个图形系统的典型操作。
图2(a)说明了一个绘制系统的一个实施例的一个框图。
图2(b)说明了在一个绘制系统内的一个绘制块实施例的一个框图。
图2(c)说明了在一个绘制块内的一个绘制器实施例的一个框图。
图3说明了一个通用计算机系统结构。
图4说明了在一个图形系统中的抽象级的一个示例。
图5说明了执行存储桶绘制的序列。
图6说明了在一个场景上执行存储桶绘制的一个示例。
图7说明了在一个场景内的层概念。
图8说明了包含多个层的一个示例场景。
详细说明描述了一种产生一个绘制图像的方法和装置。在下面的描述中,为了避免不必要地模糊本发明,公知的单元和原理,诸如图像处理、图形系统、像素、帧缓存、深度缓存、绘制、几何基本要素、约束逻辑框存储桶分类、精确存储桶分类等没有被特别详细地论述。
如先前已经在背景技术部分中提及的那样,帧缓存是指被保留用于存储在一个显示设备上显示的一个完整位映射图像的一部分存储器,而深度缓存为那个图像的每一个像素存储深度信息。另外,术语“存储桶绘制”、“存储桶绘制技术”和“存储桶绘制方案”在整个所撰写的说明书中可互换地使用,是指一种类型的绘制方法。“几何基本要素”和“基本要素”也可互换地使用,是指简单的几何形状,诸如点、线、多边形(三角形和四边形是某些示例)等。最后,“同步化事件”是指由一个图形应用开始的事件,以指示一个绘制系统把它的数据和该图形应用的当前操作条件同步。
一个图形系统一般分两个主要阶段、几何阶段和绘制阶段处理它的输入数据。几何阶段负责管理要被显示的对象的几何描述。几何描述能够描述,但不局限于,曲面、多边形、线、点或者上述所有的一个混合。几何阶段也负责准备用于绘制阶段的适当绘制属性。另一方面,绘制阶段负责管理存储器,并且把上述几何描述和它的绘制属性转换到要被显示在该图形系统的一个显示设备上的像素里。图1说明了在每一个所述阶段中的某些步骤。对于几何阶段来说,步骤是转换步骤100、照明步骤102和设置步骤104。
更特别地是,转换步骤100把一个多维模型或者一个对象的几何描述从它的本地坐标系转变到一个显示坐标系(有时也称为屏幕空间),并且响应于外部输入同步被转换的几何描述。例如,在一个3维(在下文中称为3-D)交互式游戏中,一个诸如一个鼠标的输入设备的一个用户操作可以导致在一个场景中的某些对象移动或者旋转。转换步骤100负责,但不局限于,在不同的方向移动这些对象,相对于用户的视图旋转它们,或者按比例缩放它们以改变它们的尺寸。
由于照明影响在一个场景中对象的外观,所以照明步骤102估计各种光源与这些对象相互作用的效果,并且确定用于这些对象的适当颜色以便传送一个逼真的外观。最后,设置步骤104计算被转换的几何描述的绘制属性,诸如扩散颜色、反射颜色和纹理坐标。可选地,设置步骤106能够把转换了的几何描述转换到一种适于一个绘制子系统的不同格式中。例如,设置步骤104能够在计算它的绘制属性之前转换一个曲面描述到多边形描述里。然后设置步骤104准备和传送适当的数据到光栅化步骤106。
绘制阶段的光栅化步骤106然后继续把要被绘制的信息一起放置到一个2维(在下文中称为2D)显示中。例如,光栅化步骤106计算由上述转换了的几何描述覆盖的像素的最终颜色。此外,光栅化步骤106使用某些纹理映射、α混和或者图形保真技术以进一步提高视觉效果。106的输出是为像素绘制步骤108作准备的像素值。
图2(a)、2(b)和2(c)说明了一个绘制系统的一个实施例的框图,其解决了先前在背景技术部分中讨论的兼容性和性能问题。数据转换器200在输入数据220上执行先前在几何阶段中描述的操作,并且把它转换了的输出210发送到绘制块204用于进一步的处理。另一方面,绘制块204在绘制阶段中执行任务。依据绘制块204的反馈206,切换检测器202产生一个包含一个切换条件的切换信号208,并且发送该切换信号回到绘制块204。
绘制块204的一个实施例包含多个绘制器,诸如绘制器1,212和绘制器2,214。这些绘制器可以使用各不相同的绘制技术。取决于在切换信号208中指示的切换条件,绘制块204选择绘制器1,212或者绘制器2,214来处理转换了的输出210。然后,多路复用器216基于切换信号208和绘制器的输出信号产生它的输出像素218用于显示。
图2(c)说明了绘制器2,214的一个实施例。绘制器2,214是一个可升级的绘制系统,能够处理高达一个整数n的层。术语“层”是指一段帧缓存和深度缓存数据,其中该数据段是来自于图形应用的某些请求的一个结果。例如,图7说明了一帧场景数据700(具有帧缓存数据和深度缓存数据),其表示在图8中所示的3D图形图象。特别地,场景数据700包含相关的几何基本要素、纹理状态数据等,以表示背景墙800、挂在背景墙800上的绘画802和在背景墙800前面的椅子804。
一个使用绘制器2,214的图形应用可以发布各种请求到该绘制器,诸如一个直接缓存存取请求和一个翻转请求。具体地说,图7说明了响应于所提及的直接缓存存取请求的两个锁定事件、708和710,以及响应于所提及的翻转请求的翻转事件712。翻转请求通知绘制器2,214在一个不同组的场景数据上工作,但是在一个显示设备上显示所产生的场景数据700的位映射图像。在图7中显示的示例中,存在三个“层”。第一层包含在场景数据700的开始和锁定事件708(包含锁定事件708)之间的段。第二层包含在锁定事件708和锁定事件710(包含锁定事件710)之间的段。第三层包含在锁定事件710和翻转事件712(包含翻转事件712)之间的段。
考虑到层的概念,绘制器2,214还包含多个子绘制器220、222和224,其中每一个子绘制器处理一个层。绘制器2,214中的组合器226然后组合子绘制器的输出,并且传送组合的输出到多路复用器216。
在图2(a)中显示的块能够在一个电子系统中被编程或者实现。一个电子系统的某些示例是,但不局限于,内插的电路板、独立的电子装置、和通用计算机系统。在图3中说明了一个通用计算机系统300。
通用计算机系统结构包含微处理器302和高速缓冲存储器304,它们通过处理器总线305彼此相连。示例的计算机系统300还包含高性能I/O总线308和标准I/O总线318。处理器总线305和高性能I/O总线308由主机桥接器306桥接,而高性能I/O总线308和标准I/O总线318由I/O总线桥接器310桥接。与高性能I/O总线308相连的是主存储器312和视频子系统314。视频子系统314经常包含它自己的处理单元和存储器单元。与视频子系统314相连的是视频显示器216。做为选择,如由虚线所示,视频子系统314或者主存储器312也可以与主机桥接器306相连。与标准I/O总线318相连的是大容量存储器320、网络接口324、和字母数字输入设备或者其它传统的输入设备322。
这些单元执行它们在本技术领域内公知的传统功能。特别地,大容量存储器320可以用来提供用于在一个实施例中的可执行指令的永久存储,而主存储器312可以用来在由微处理器302执行期间临时存储一个实施例中的可执行指令。
一个绘制块的详细操作描述了一种产生一个绘制的图像的方法和装置。具体地说,在一个实施例中,该方法和装置从一个绘制器集合中进行选择以执行绘制并维护保存在该装置的帧缓存和深度缓存中的信息。
该实施例在一个电子系统、或者特别地在通用计算机300上进行操作。图4说明了一个实施例在上面进行操作的抽象级。应用层400涉及图形应用。一个这样的示例是3D交互式游戏。这些图形应用的指令一般被保存在大容量存储器320中并且由微处理器302执行。在应用层400内,图形应用可以激活现有的绘制软件例程来处理它们的绘制任务。这些绘制软件例程因此提供了用于应用层400的高级API402。高级API 402的一个例子是来自于微软公司的Direct3D保持模式。
然而,高级API 402可以调用由通用计算机300的操作系统开发的其它低级例程,诸如但不局限于,Direct3D即时模式或者OpenGL。这些例程被分类为低级API 404,而且它们还与设备驱动程序406进行接口。设备驱动程序406通常被专门设计用于硬件408以及和硬件408直接通讯。硬件408一般涉及在图3中显示的视频子系统314。对于在本领域普通技术人员来说,以设备驱动程序406、硬件408或者两者的一个组合实现在图2(a)中说明的块应当是显然的。
如先前已经讨论的那样,切换检测器202基于绘制块204的反馈206产生切换信号208。在一个实施例中,绘制块204可以为每一帧维护与直接缓存存取请求或者同步化事件(在下文中称为深槽)的数目有关的信息。当该数量超过某一阈值时,某些诸如存储桶绘制之类的绘制技术的性能,可能变得比一个传统的绘制方案还要更不令人满意。当绘制块204在它的反馈206中指示这个查找时,切换检测器202把在反馈206中的信息转换成为一个切换条件,并且把该条件嵌入在它的切换信号208中。对于在本领域普通技术人员来说,设计绘制块204以跟踪其它不同于所提及的锁定操作的信息、或者建立不同的阐值用于触发所讨论的切换条件是显而易见的。
除了跟踪性能信息和产生反馈206之外,绘制块204包含一个绘制器集合。在一个实施例中,绘制器1,212使用一种传统的绘制方案,而在绘制器2,214中的子绘制器220、222和224使用先前所提及的存储桶绘制方案。在图5中说明的流程图结合在图6中显示的一个示例场景,描述了该存储桶绘制方法的操作。图6显示了具有一个简单对象602的场景600。
当切换信号208指示切换到绘制器2,214、并且指示仅仅存在一个层(即,深槽的数目等于0)时,绘制器2,214基于子绘制器、用它的一个存储桶绘制处理场景600的转换输出210。该处理过程用在块500中、把场景600细分为区域604、606、608和610开始。在一个实施例中,剪辑矩形612是在每一个细分的区域中能够覆盖在场景600中的对象像素、诸如602的最小矩形。因此,在这种情况下,剪辑矩形612的尺寸与细分区域的尺寸重合。
在细分之后,由于转换了的输出210已经经历了几何阶段,所以有关场景600的基本要素的信息是可用的,而且在502中被分类到适当区域中。特别地,基本要素614属于区域604,基本要素616属于区域606,基本要素618属于区域608,且基本要素620属于区域610。可以在502中应用各种分类算法而未超出所描述的绘制块204的范围。某些可适用的算法是,但不局限于,约束逻辑框存储桶分类和精确存储桶分类。同样重要的是,要注意到任何与基本要素状态改变或操作相关联的命令或者指令还被组织和放置到它们的相应区域中。
一旦基本要素和相关的命令在它们的相应区域中了,则在504中,剪辑矩形612删除在这些区域以外的任何信息。对于本领域普通技术人员来说,组合504和502或者组合504和506是显而易见的。此外,当剪辑矩形612完成删除在区域604外的信息时,通过简单地改变它的坐标,它能够移动到一个不同的区域,诸如区域606。在分类和剪辑之后,在506中,以基本要素提交到它们区域的顺序在每一个区域中绘制基本要素。
当存在多个层、或者换句话说当深槽数目大于零时,以及当切换信号208指示切换到绘制器2,214时,绘制器2,214的一个实施例然后进行分配每一层到它的基于存储桶绘制的子绘制器(220,222和224)中的一个。使用图8作为一个说明,层1可以对应于背景墙800,并且被分配给子绘制器220。层2可以对应于绘画802并且被分配给子绘制器222。层3可以对应于椅子804并且被分配给子绘制器224。由这些子绘制器执行的操作实质上和先前结合图5和图6描述的操作一样。组合器226然后收集用于层1、层2和层3的绘制数据,并且确定在背景墙800、绘画802和椅子804当中的相对深度信息。基于那个确定,组合器226继续组织不同层的绘制数据并且产生适当的像素数据用于显示。
做为选择,绘制器2,214的另一实施例可以包含一个子绘制器,诸如子绘制器220,但是仍然设法处理多个层。首先,绘制器2,214确保完整和外部可见的帧缓存及/或深度缓存存在。其次,子绘制器220开始绘制在层一中的场景数据(直至锁定事件708的时刻)。当检测到锁定事件708时,子绘制器220刷新帧及/或深度缓存数据到外部可见的缓存。因为与现存图形应用的兼容性或者绘制后续层,所以保持该数据。第三,子绘制器220继续绘制层二直至锁定事件710。类似地,当遇到锁定事件710时,子绘制器212刷新帧及/或深度缓存数据到外部可见缓存。最后,子绘制器220绘制层三直到翻转事件712为止,并且再次刷新帧及/或深度缓存数据到外部可见缓存。应当注意到组合这些层以产生一个用于多路复用器216的输出通过上述三次刷新被隐含地完成了。
因此,已经公开了一种用于产生一个绘制的图像的方法和装置。虽然已经参考附图特别地描述了该方法和装置,但是它们可以出现在任意数量的系统中,其提供了产生一个绘制的图像的性能。可以进一步考虑到可以由本领域普通技术人员做出许多改变和修改而不背离所讨论的方法和装置的精神和范围。
权利要求
1.一个用于产生一个绘制的图像的图形系统,包含a.一个切换检测器,在该图形系统中检测一个切换条件;以及b.一个与切换检测器相连的绘制块,其依据所检测到的切换条件绘制多个层。
2.如权利要求1所述的图形系统,其特征在于在1(a)中的切换条件基于每个帧的深槽数目。
3.如权利要求1所述的图形系统,其特征在于在1(b)中的绘制块进一步包含a.一个多路复用器;b.一个与该多路复用器相连的第一绘制器,使用一种传统的绘制技术;以及c.一个与该多路复用器相连的第二绘制器,使用一种存储桶绘制技术。
4.如权利要求3所述的图形系统,其特征在于在3(c)中的第二绘制器进一步包含a.多个子绘制器以处理多个层;以及b.一个与这些子绘制器相连的组合器,以组合子绘制器的绘制输出。
5.如权利要求4所述的图形系统,其特征在于在4(a)中的子绘制器进一步使用存储桶绘制技术。
6.如权利要求5所述的图形系统,其特征在于在4(a)中的子绘制器进一步a.细分这些层到多个区域中;b.独立地绘制这些区域;以及c.在一个外部可见缓存中保持这些层的帧缓存数据。
7.如权利要求6所述的图形系统,其特征在于6(a)进一步包含把这些层的基本要素分类和放置到被划分的区域中。
8.如权利要求6所述的图形系统,其特征在于6(c)进一步在外部可见缓存中保持这些层的深度缓存数据。
9.一个用于产生一个绘制的图像的电子系统,包含a.一个主机桥接器;b.一个与该主机桥接器相连的微处理器;c.一个与该主机桥接器相连的视频子系统,其中该视频子系统进一步包含一个切换检测器,在该图形系统中检测一个切换条件;以及一个与切换检测器相连的绘制块,其依据所检测到的切换条件绘制多个层。
10.如权利要求9所述的电子系统,其特征在于在9(c)中的切换条件基于每个帧的深槽数目。
11.如权利要求9所述的电子系统,其特征在于在9(c)中的绘制块进一步包含a.一个多路复用器;b.一个与该多路复用器相连的第一绘制器,以使用一种传统的绘制技术;以及c.一个与该多路复用器相连的第二绘制器,以使用一种存储桶绘制技术。
12.如权利要求11所述的电子系统,其特征在于在11(c)中的第二绘制器进一步包含a.多个子绘制器以处理多个层;以及b.一个与这些子绘制器相连的组合器,以组合子绘制器的绘制输出。
13.如权利要求12所述的电子系统,其特征在于在12(a)中的子绘制器进一步使用存储桶绘制技术。
14.如权利要求13所述的电子系统,其特征在于在12(a)中的子绘制器进一步a.细分这些层到多个区域中;b.独立地绘制这些区域;以及c.在一个外部可见缓存中保持这些层的帧缓存数据。
15.如权利要求14所述的电子系统,其特征在于14(a)进一步包含把这些层的基本要素分类和放置到被划分的区域中。
16.如权利要求14所述的电子系统,其特征在于14(c)进一步在外部可见缓存中保持这些层的深度缓存数据。
17.一种用于产生一个绘制的图像的方法,包含a.在该图形系统中检测一个切换条件;以及b.依据所检测到的切换条件绘制多个层。
18.如权利要求17所述的方法17,其特征在于在17(a)中的切换条件基于每个帧的深槽数目。
19.如权利要求17所述的方法,其特征在于17(b)进一步包含依据所检测到的切换条件,在一种传统的绘制技术和一种存储桶绘制技术之间进行选择。
20.如权利要求19所述的方法,其特征在于利用存储桶绘制技术进行绘制进一步包含a.绘制多个层;以及b.组合这些层的绘制输出。
21.如权利要求20所述的方法,其特征在于在20(a)中绘制这些层进一步包含a.细分这些层到多个区域中;b.独立地绘制这些区域;以及c.在一个外部可见缓存中保持这些层的帧缓存数据。
22.如权利要求21所述的方法,其特征在于21(a)进一步包含把这些层的基本要素分类和放置到被划分的区域中。
23.如权利要求21所述的方法,其特征在于21(c)进一步包含在外部可见缓存中保持这些层的深度缓存数据。
24.一个具有包含在其中的指令的机器可读介质,当该指令由一个图形系统执行时,导致该图形系统产生一个绘制的图像,这通过下面步骤完成a.在该图形系统中检测一个切换条件;以及b.依据所检测到的切换条件绘制多个层。
25.如权利要求24所述的机器可读介质,其特征在于在24(a)中的切换条件基于每个帧的深槽数目。
26.如权利要求24所述的机器可读介质,其特征在于24(b)进一步包含依据检测到的切换条件,在一种传统的绘制技术和一种存储桶绘制技术之间进行选择。
27.如权利要求26所述的机器可读介质,其特征在于用存储桶绘制技术进行绘制进一步包含a.绘制多个层;以及b.组合这些层的绘制输出。
28.如权利要求27所述的机器可读介质,其特征在于在27(a)中绘制这些层进一步包含a.细分这些层到多个区域中;b.独立地绘制这些区域;以及c.在一个外部可见缓存中保持这些层的帧缓存数据。
29.如权利要求28所述的机器可读介质,其特征在于28(a)进一步包含把这些层的基本要素分类和放置到被划分的区域中。
30.如权利要求28所述的机器可读介质,其特征在于28(c)进一步包含在外部可见缓存中保持这些层的深度缓存数据。
全文摘要
公开了一种绘制一个图像的方法和装置。在一个实施例中,一个图形系统具有一个切换检测器,其在该图形系统中检测一个切换条件。该图形系统还具有一个绘制块,其依据检测到的切换条件绘制多个层。
文档编号G06T15/00GK1434962SQ00819012
公开日2003年8月6日 申请日期2000年11月28日 优先权日1999年12月22日
发明者H·C·E·斯, V·M·彭特科夫斯基 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1