一种体素化游戏世界的渲染方法

文档序号:9751737阅读:284来源:国知局
一种体素化游戏世界的渲染方法
【技术领域】
[0001]本发明实施例涉及计算机图形技术领域,尤其涉及一种体素化游戏世界的渲染方法。
【背景技术】
[0002]三维游戏中构建虚拟游戏世界普遍采用多边形网格建立模型,而体素风格的游戏世界则通过立体像素构建游戏世界。立体像素(以下简称“体素”)包含了关于对象形状的重要信息,体素数据结构简单均匀,相对于网格建立的模型更易修改,其修改更接近于现实世界的情况,即添加立体物或者在另一个立体物中减去立体物。体素化的游戏世界的场景具有两个对现代游戏愈加重要的特点,即可破坏性与可创造性。体素风格的游戏,例如《我的世界》。
[0003]体素化游戏世界构建过程中,对每个立体像素进行标识,例如,若立体像素被标识为O,则表示该立体像素的每个面都位于内部,不可见;若立体像素被标识为I,则表示该立体像素有一个面或者多个面是可见的。
[0004]渲染时只渲染二进制标识位为I的立体像素,若某立体像素有k(k〈8)个面是可见的,而其他(8_k)个面都不可见,现有技术中,在渲染k个可见面的同时,其他(8-k)个面也被渲染,延长了渲染时间,加大了渲染管线压力,降低了渲染效率。

【发明内容】

[0005]本发明提供一种体素化游戏世界的渲染方法,克服了现有技术中渲染外部立体像素时渲染外部立体像素所有面,造成的渲染管线压力大以及渲染效率低的缺陷。
[0006]本发明公开了一种体素化游戏世界的渲染方法,包括:
[0007]步骤1、判断第i个立体像素是否为外部立体像素,若是,执行步骤2,否则,i= i+Ι,直至i=N,N为立体像素总个数,返回执行步骤1;
[0008]步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤3;
[0009]步骤3、根据所述顶点缓冲区的顶点位置,渲染所述外部面。
[0010]进一步地,当所述立体像素面的相邻位置存储有另一立体像素时,所述立体像素面为内部面,否则所述立体像素面为外部面,所述内部面和外部面由第一标识进行标记。[0011 ]进一步地,当所述立体像素面全部为内部面时,所述立体像素为内部立体像素,当所述立体像素面中存在至少一个外部面时,所述立体像素为外部立体像素,所述内部立体像素和外部立体像素由第二标识进行标记。
[0012]进一步地,所述第一标识为一个比特的二进制数;所述第二标识为一个比特的二进制数。
[0013]进一步地,步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,具体包括:
[0014]步骤20、初始化所述第i个立体像素的面编号j= 0;
[0015]步骤21、判断所述第i个立体像素的面编号j是否小于立体像素面总数M,若是,执行步骤22,否则,执行所述步骤3;
[0016]步骤22、判断所述第i个立体像素的第j个立体像素的面是否为外部面,若是,执行步骤23,否则,执行步骤24;
[0017]步骤23、计算所述第i个立体像素的第j个立体像素面的顶点位置,并将所述顶点位置存入所述顶点缓冲区,继续执行步骤24;
[0018]步骤24、所述立体像素面编号j= j+l,继续执行步骤21。
[0019]进一步地,所述体素化世界的渲染方法在步骤1、判断第i个立体像素是否为外部立体像素之前,还包括,创建所述顶点缓冲区。
[0020]本发明提供的技术方案,通过判断外部立体像素的外部面并计算所有外部面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提高了渲染效率。
【附图说明】
[0021]图1是本发明实施例一提供的一种体素化游戏世界的渲染方法的流程示意图;
[0022]图2是本发明实施例二提供的一种体素化游戏世界的渲染方法的流程示意图。
【具体实施方式】
[0023]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0024]在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0025]实施例一
[0026]图1是本发明实施例一提供的一种体素化游戏世界的渲染方法的流程示意图。所述方法适用于构建体素化游戏世界。所述体素化游戏世界的渲染方法,包括步骤S100-S102:
[0027]S100、判断第i个立体像素是否为外部立体像素,若是,执行步骤101,否则,i = i+I,直至i=N,N为立体像素总个数,返回执行步骤100;
[0028]S101、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤S102;
[0029]S102、根据所述顶点缓冲区的顶点位置,渲染所述外部面。
[0030]进一步地,当立体像素面的相邻位置存储有另一立体像素时,立体像素面为内部面,否则立体像素面为外部面,内部面和外部面由第一标识进行标记。
[0031]在对体素化游戏世界的立体像素进行渲染之前,立体像素的存储位置是已知的,当立体像素面的相邻位置存储有另一立体像素时,表明该立体像素面被遮挡,对外不可见,即为内部面,无需渲染处理。当立体像素面的相邻位置没有存储立体像素时,表明该立体像素的面是对外可见的,即外部面,需要进行渲染处理。内部面和外部面可以由第一标识进行标记,优选的,第一标识为一个比特的二进制数。
[0032]进一步地,当立体像素面全部为内部面时,立体像素为内部立体像素,当立体像素面中存在至少一个外部面时,立体像素为外部立体像素,内部立体像素和外部立体像素由第二标识进行标记。优选的,第二标识为一个比特的二进制数。
[0033]进一步地,该体素化世界的渲染方法在判断第i个立体像素是否为外部立体像素之前,还包括,创建所述顶点缓冲区。其中,顶点缓冲区用于存储外部面的顶点位置,顶点缓冲区的存储大小是根据构建游戏世界的立体像素的数量确定。
[0034]本发明实施例提供的技术方案,通过判断外部立体像素的外部面并计算所有外部面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提高了渲染效率。
[0035]实施例二
[0036]图2是本发明实施例二提供的一种体素化游戏世界的渲染方法的流程示意图。本实施例是在实施例一的基础上,对实施例一中的步骤SlOl、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,进一步具体化。所述体素化游戏世界的渲染方法,包括步骤S200-S209:
[0037]S200、初始化立体像素编号i = 0,继续执行步骤S201 ;
[0038]S201、判断立体像素编号i是否小于立体像素总数N,若是,执行步骤S202,否则,执行步骤S209;
[0039]S202、判断第i个立体像素是否为外部立体像素,若是,执行步骤S203,否则,执行步骤S208;
[0040]S203、初始化第i个立体像素的面编号j = 0,继续执行步骤S204;
[0041]S204、判断第i个立体像素的面编号j是否小于立体像素面总数M,若是,执行步骤S205,否则,执行步骤S207;
[0042]S205、判断第i个立体像素的第j个立体像素面是否为外部面,若是,执行步骤S206,否则,执行步骤S207;
[0043]S206、计算第i个立体像素的第j个立体像素面的顶点位置,并将顶点位置存入顶点缓冲区,继续执行步骤S207;
[0044]S207、立体像素面编号j = j+Ι,继续执行步骤S204;
[0045]S208、立体像素编号i = i+l,继续执行步骤S201 ;
[0046]S209、根据顶点缓冲区的顶点位置,渲染外部面。
[0047]本发明实施例提供的技术方案,通过判断外部立体像素的外部面以及计算所有外部面的顶点位置,根据顶点位置只渲染外部立体像素的外部面,减小了渲染管线压力,提高了渲染效率。
[0048]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许变更或修饰等,凡在本发明的精神和原则之内所作的任何修改、等同替换或改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种体素化游戏世界的渲染方法,其特征在于,包括: 步骤1、判断第i个立体像素是否为外部立体像素,若是,执行步骤2,否则,i = i+Ι,直至i = N,N为立体像素总个数,返回执行步骤I; 步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤3; 步骤3、根据所述顶点缓冲区的顶点位置,渲染所述外部面。2.根据权利要求1所述的方法,其特征在于,当所述立体像素面的相邻位置存储有另一立体像素时,所述立体像素面为内部面,否则所述立体像素面为外部面,所述内部面和外部面由第一标识进行标记。3.根据权利要求2所述的方法,其特征在于,当所述立体像素面全部为内部面时,所述立体像素为内部立体像素,当所述立体像素面中存在至少一个外部面时,所述立体像素为外部立体像素,所述内部立体像素和外部立体像素由第二标识进行标记。4.根据权利要求3所述的方法,其特征在于,所述第一标识为一个比特的二进制数;所述第二标识为一个比特的二进制数。5.根据权利要求1所述的方法,其特征在于,步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,具体包括: 步骤20、初始化所述第i个立体像素的面编号j = 0; 步骤21、判断所述第i个立体像素的面编号j是否小于立体像素面总数M,若是,执行步骤22,否则,执行所述步骤3; 步骤22、判断所述第i个立体像素的第j个立体像素的面是否为外部面,若是,执行步骤23,否则,执行步骤24; 步骤23、计算所述第i个立体像素的第j个立体像素面的顶点位置,并将所述顶点位置存入所述顶点缓冲区,继续执行步骤24; 步骤24、所述立体像素面编号j = j+l,继续执行步骤21。6.根据权利要求1所述的方法,其特征在于,步骤1、判断第i个立体像素是否为外部立体像素之前,还包括,创建所述顶点缓冲区。
【专利摘要】本发明公开了一种体素化游戏世界的渲染方法。所述方法,包括:步骤1、判断第i个立体像素是否为外部立体像素,若是,执行步骤2,否则,i=i+1,直至i=N,N为立体像素总个数,返回执行步骤1;步骤2、计算所述第i个立体像素所有外部面的顶点位置,并将所述顶点位置存入顶点缓冲区,继续执行步骤3;步骤3、根据所述顶点缓冲区的顶点位置,渲染所述外部面。本发明提供的技术方案,通过判断外部立体像素的外部面并计算所有外部面的顶点位置,根据顶点位置只渲染外部面,减小了渲染管线压力,提高了渲染效率。
【IPC分类】G06T15/00
【公开号】CN105513118
【申请号】CN201510836751
【发明人】李杨
【申请人】北京像素软件科技股份有限公司
【公开日】2016年4月20日
【申请日】2015年11月26日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1