CN105867911B - 一种Iris 2D图形引擎的实现方法 - Google Patents

一种Iris 2D图形引擎的实现方法 Download PDF

Info

Publication number
CN105867911B
CN105867911B CN201610173894.3A CN201610173894A CN105867911B CN 105867911 B CN105867911 B CN 105867911B CN 201610173894 A CN201610173894 A CN 201610173894A CN 105867911 B CN105867911 B CN 105867911B
Authority
CN
China
Prior art keywords
iris
language
graphics engine
virtual machine
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201610173894.3A
Other languages
English (en)
Other versions
CN105867911A (zh
Inventor
杨洋
黄毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu University
Original Assignee
Jiangsu University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangsu University filed Critical Jiangsu University
Priority to CN201610173894.3A priority Critical patent/CN105867911B/zh
Publication of CN105867911A publication Critical patent/CN105867911A/zh
Application granted granted Critical
Publication of CN105867911B publication Critical patent/CN105867911B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种Iris 2D图形引擎的实现方法,包括如下步骤:(1)对不同的平台选定不同的底层编程接口,Windows平台上采用DirectX 11图形编程接口,使用C++语言进行开发;Andriod平台上采用OpenGL ES图形编程接口,使用Java语言进行开发,利用宿主语言开发出对应平台上的图形引擎,所述图形引擎提供用于外部调用的宿主语言接口;(2)由(1)中的宿主语言开发出对应平台上的Iris语言虚拟机,该虚拟机提供用于第三方扩展的宿主语言接口;(3)通过调用(1)中的图形引擎所暴露出的接口,用宿主语言编写Iris语言虚拟机的扩展;(4)使用时在Iris脚本中加载所述扩展,将IRIS语言嵌入到图形引擎,进行图形引擎的控制,进而完成图形的渲染工作。本发明简单易用、可移植性好。

Description

一种Iris 2D图形引擎的实现方法
技术领域
本发明属于计算机软件技术领域,具体涉及一种带有脚本系统的跨平台2D图形引擎的实现方法。
背景技术
随着计算机图形学的发展,图形设备的硬件成本不断下降,各行各业尤其是游戏产业对于在计算机上进行图形处理、渲染、显示等方面的需求越来越大,它们一开始都是作坊式地闭门造车,自己为自己写一套框架以应对不同的图形引擎的开发。而随着计算机图形学所带来的消费市场的不断扩大,各种日新月异层出不穷的需求让众多厂商、开发者们疲于处理自己的那一套框架,从而大大地消耗了他们的精力,使得他们在面对众多需求的时候感到力不从心。于是业者逐渐达成一致的观点,那就是需要一套通用、安全、方便、易扩展的统一框架,这套框架由专门的人员来负责管理以提供可靠性,而他们则可以不再关心这种底层的事情,而把精力集中在自身应用开发的本职上,这将大大提高他们的工作效率,能够轻装上阵地应付更多的需求,创造更大的效益。这套框架就是“图形引擎”。
随着智能手机市场的不断扩大,移动应用的开发迎来了一次高潮,鉴于移动平台的硬件机能限制,大多数的图形渲染都进行的是2D的图形渲染,也因此随着移动应用市场的不断扩大使得业界对于2D图形引擎的需求也越来越大,例如开发游戏,数据可视化以及科学研究的图形显示等,这使得曾经一度处于低迷状态的2D图形引擎领域再次焕发的光彩。
目前市面上有许许多多的图形引擎,它们虽然在一定程度上解决了厂商对于统一的图形引擎的需求问题,但是仍然存在一些不足之处。本发明考察了目前比较流行的几款2D图形引擎作为比较,总结出了以下几个问题。
(1)图形引擎的开发使用了比较落后的技术,比如Cyclone2D,它使用系统绘图函数进行图形绘制,这非常低效。
(2)图形引擎的设计功能过于复杂,虽然看起来功能强大,但事实上有很多功能对于大部分开发者而言是用不到的,这反而增加了开发者的学习负担,比如Unity 2D。
(3)图形引擎不能很好地支持跨平台,这造成了开发者无法方便地移植自己的应用到其他平台上的问题,比如HGE,它采用DirectX 8开发,仅支持Windows平台。
(4)图形引擎虽然能够跨平台,但开发的语言并不容易掌握,对于轻量级应用的开发与部署的需求造成了很大的麻烦,比如Cocos2DX,它采用C++作为开发语言,支持跨平台,但C++对于开发者而言难以掌握,这加重了初学者的学习成本。
发明内容
针对上述问题,本发明提出了一种新型的2D图形引擎—Iris 2D图形引擎,采用如下技术方案:
一种Iris 2D图形引擎的实现方法,包括如下步骤:
(1)对不同的平台选定不同的底层编程接口,利用宿主语言开发出对应平台上的图形引擎,所述图形引擎提供用于外部调用的宿主语言接口;
(2)由步骤(1)中的宿主语言开发出对应平台上的Iris语言虚拟机,该虚拟机提供用于第三方扩展的宿主语言接口;
(3)通过调用步骤(1)中的图形引擎所暴露出的接口,用宿主语言编写Iris语言虚拟机的扩展;
(4)使用时在Iris脚本中加载所述扩展,将IRIS语言嵌入到图形引擎,进行图形引擎的控制,进而完成图形的渲染工作;
进一步地,步骤(1)中所述底层编程接口具体包括:Windows平台上采用DirectX11图形编程接口,使用C++语言进行开发;Andriod平台上采用OpenGL ES图形编程接口,使用Java语言进行开发。
进一步地,步骤(2)中所述Iris语言虚拟机包括前端和后端两个部分;
所述前端包括词法分析器、语法分析器、中间代码生成器、优化器、虚拟机字节码生成器这几个部分,基于编译原理中的成果,完成读入用Iris语言编写的脚本文件,将其中的脚本内容逐步转化为Token、语法分析树、四元式中间代码,然后进行代码优化,最后输出为Iris语言虚拟机字节码;
所述后端是通过读取前端送来的字节码序列,从头到尾逐一进行字节码的翻译与执行,完成脚本程序的执行。
进一步地,步骤(1)中所述图形引擎的实现包括如下步骤:
(1-1)对不同的平台选定具体的底层图形编程接口;
(1-2)对不同的平台选定具体的宿主语言;
(1-3)采用宿主语言对底层图形编程接口进行封装,实现所需类与模块的功能;
(1-4)将实现出来的功能对外暴露出接口,以便于外部第三方调用。
进一步地,步骤(2)与步骤(4)中所述的能够运行Iris语言的虚拟机的实现以及在Iris脚本中加载所述扩展、将Iris语言嵌入到图形引擎的具体实现包括如下步骤:
(4-1)对于不同的平台,选定不同的宿主语言作为开发语言(即开发虚拟机的语言与开发图形引擎的语言相同);
(4-2)根据编译原理中对3-型语言的处理方法或者直接使用如lex/flex这样的自动生成工具生成词法分析器,从脚本文件中读入脚本文本,分析成TOKEN流并传给语法分析器;
(4-3)根据编译原理中对2-型语言的处理方法或者直接使用如yacc/bison这样的自动生成工具生成语法分析器,对(4-2)中接收到的TOKEN流进行分析,生成语法分析树,并传给中间代码生成器;
(4-4)根据编译原理中对语法分析树的处理方法,编写中间代码生成器,根据具体的语义将(4-3)中得到的语法分析树转换为四元式序列,并传给优化器;
(4-5)根据编译原理中的编译优化方法,编写优化器,将(4-4)中得到的四元式序列进行优化处理,处理完后的四元式序列传给虚拟机字节码生成器;
(4-6)根据Iris虚拟机字节码规范,将(4-5)中得到的四元式一一对应地翻译为Iris虚拟机字节码,完成虚拟机字节码生成器的编写,并将字节码序列传给虚拟机执行部分;
(4-7)根据Iris虚拟机字节码规范,对表3中的所有Iris虚拟机字节码进行实现(即让每一条字节码都有对应的动作),虚拟机需要拥有表4中所列出的栈和寄存器结构,最后将(4-6)中传来的字节码序列进行一一进行译码,然后从头到尾地执行。
(4-8)将Iris虚拟机中可用于第三方扩展编写的部分(比如如何从外部定义一个类、定义一个方法并传给Iris虚拟机)封装成接口并对外部暴露(如把整个虚拟机编译成DLL)
(4-9)编写Iris扩展的时候开发者使用到上述Iris虚拟机的接口,使用到这些接口的Iris扩展编写完毕后,开发者将可以在Iris脚本中直接加载这些扩展,完成Iris语言的嵌入工作。
进一步地,还包括将Iris 2D图形引擎应用部署到不同的平台上,实现方法包括如下步骤:
(5-1)根据用户目标平台的不同开发者将对应的Iris 2D图形引擎部署安装到用户的机器上;
(5-2)开发者将图形引擎所需要的资源、脚本交付给用户;
(5-3)用户在自己的平台上启动Iris 2D图形引擎;
(5-4)Iris 2D图形引擎自动加载开发者提供的脚本;
(5-5)Iris虚拟机执行脚本;
(5-6)虚拟机根据脚本中的图形命令转而去调用已经封装好的数组语言的相应接口;
(5-7)图形引擎根据被调用的接口执行相应的底层图形处理;
(5-8)输出图形。
与现有技术相比,本发明的有益效果包括:
(1)采用先进的图形技术进行2D图形渲染和显示。
(2)精简易用的功能体系,初学者能够非常迅速地上手。
(3)支持跨平台开发,并且跨平台开发的语言是一门名为Iris的动态脚本语言,该脚本语言具有灵活易学的特征。
(4)通过把Iris语言嵌入到图形引擎中,开发者就可以完全不用掌握传统的复杂的开发语言比如C++而直接编写脚本驱动的图形引擎。
(5)同时只需要编写一次Iris脚本,就能够在对脚本进行少量甚至不进行修改的情况下把自己的图形引擎移植到任何Iris 2D图形引擎所支持的平台上去。
(6)大幅度地减轻了开发者对跨平台图形引擎开发的负担,提高了产品的开发效率。
(7)采用了先进的底层图形编程接口,使用Iris 2D图形引擎开发的2D图形引擎效率较其他使用诸如系统绘图函数这样子低效绘制接口的图形引擎要高。
附图说明
图1为Iris 2D整体构架示意图;
图2为Iris 2D图形引擎部分构架示意图;
图3为Iris语言虚拟机部分构架示意图;
图4为Iris 2D跨平台部署示意图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
如图1所示,Iris 2D总体分为两个部分,即图形引擎部分和运行Iris语言的虚拟机部分,整个图形引擎的显示、渲染工作都是由图形引擎部分来完成的,它负责了调用具体平台的图形编程接口进行2D图形的渲染、显示工作,它保证了2D图形的处理工作。对不同的平台选择的图形编程接口、以及进行具体开发语言都是有区别的,比如在Windows上选择DirectX 11图形编程接口,同时使用C++进行开发,而在Andriod平台上则选择OpenGL ES图形编程接口同时使用Java进行开发;这里定义名词“宿主语言”为开发图形引擎时采用的语言。而Iris语言部分则是脚本驱动图形引擎的关键,Iris语言拥有基于栈实现的虚拟机,该虚拟机是Iris语言完成平台无关性的关键,类似JVM,Iris虚拟机在其所支持的平台上都有相应的实现,它与Iris 2D图形引擎绑定,采用该平台上的宿主语言进行开发。最后把图形引擎通过宿主语言编写成Iris语言的扩展库(比如在Windows平台上将扩展库编写成DLL而在Andriod平台上将扩展库编写成Java的jar包),通过在Iris脚本中加载此扩展库,以扩展库的形式能够在Iris脚本中直接操作图形引擎,而完成扩展库编写的基本任务就是把宿主语言编写的图形引擎接口通过编写Iris扩展然后映射到Iris语言中。
本发明Iris 2D图形引擎的实现步骤包括以下步骤:
(1)对不同的平台选定不同的底层编程接口,利用宿主语言开发出对应平台上的图形引擎,该图形引擎提供用于外部调用的宿主语言接口;
(2)由(1)中的宿主语言开发出对应平台上的Iris语言的虚拟机,该虚拟机提供用于第三方扩展的宿主语言接口;
(3)通过调用(1)中的图形引擎所暴露出的接口,用宿主语言编写Iris语言虚拟机的扩展;
(4)使用时在Iris脚本中加载该扩展,进行图形引擎的控制,进而完成图形的渲染等工作;
关于Iris 2D图形引擎部分的构架如图2所示。图形引擎的底层使用的是某一具体平台上最为流行的图形编程接口,图形引擎通过对这些对于2D应用开发而言并不直观的底层的接口进行封装,抽象出更加适合2D图形编程的、思想模式更加自然的面向对象的接口。对于一个完整的Iris 2D图形引擎部分,无论使用哪种宿主语言,所开发的引擎接口都是面向对象的,对外提供了如表1所示的一些进行2D开发的基本概念的类和模块以及基本实现方式:
表1
以上列出的类和模块是Iris 2D图形引擎接口功能集的最小子集,它保证了在任何平台上使用这样一套接口都能够完成2D图形的输出和渲染,而对于不同平台上的Iris2D图形引擎接口还会有适应于该平台的第三方扩展,这些扩展可以是引擎自身携带也可以是开发者自行进行开发的,从而能够更加适应不同平台的开发。
将上述的类和模块集合在一起便是Iris 2D图形引擎的渲染核心,通过将这些接口编译成静态库(lib或者a文件)或者动态库(dll或者so文件),并暴露出相应的接口,那么开发者就可以在自己的应用程序中通过引用该静态库就能够调用到引擎的接口,完成2D图形的渲染输出等操作了。
图形引擎部分的实现包括如下步骤:
(1)对不同的平台选定具体的底层图形编程接口(DirectX/OpenGL等);
(2)对不同的平台选定具体的宿主语言(C++/Java等);
(3)采用宿主语言对底层图形编程接口进行封装,进一步实现出表1中列出的类与模块所需要的功能;
(4)将实现出来的功能对外暴露出接口,以便于外部第三方调用(比如封装成DLL)。
关于Iris 2D的Iris语言虚拟机部分构架如图3所示。Iris语言虚拟机分为前端和后端两个部分,其中前端主要包括词法分析器、语法分析器、中间代码生成器、优化器、虚拟机字节码生成器这几个部分,它基于编译原理中的成果,完成了读入用Iris语言编写的脚本的文本文件,将其中的脚本内容逐步转化为Token、语法分析树、四元式中间代码,然后进行代码优化,最后输出为Iris虚拟机字节码的步骤,经过前端的处理,Iris脚本被处理为Iris虚拟机能够识别并执行的字节码序列。而后端则是通过读取前端送来的字节码序列,从头到尾逐一进行字节码的翻译与执行,如同CPU执行机器语言一般,完成脚本程序的执行。
Iris前端所需要实现的各个模块的说明如表2:
表2
该部分的实现全部都是基于编译原理的内容完成的。通过前端的处理,已经获得了Iris虚拟机能够执行的虚拟机字节码序列,此时则需要将该序列交给后端进行逐条执行。
Iris虚拟机类似于JVM,是使用了栈的虚拟机,但是为了提高效率对于一些特殊指令的处理则使用了特定的虚拟寄存器进行操作,因此Iris虚拟机并不是完全基于栈的虚拟机,而是基于栈和基于寄存器的虚拟机的结合而成的虚拟机。
Iris虚拟机包括以下指令集:
表3
Iris虚拟机拥有这样一些寄存器和栈如表4所示:
表4
Iris虚拟机使用宿主语言开发,因此能够很好地用宿主语言进行扩展,开发Iris虚拟机,因此可以暴露出一系列用于开发的接口,高级开发者可以通过这些接口进行第三方的开发,进而编写更多的扩展库以增强Iris的功能。这里以Windows平台为例,采用C++开发Iris虚拟机后,将Iris虚拟机部分编译为动态连接库DLL,然后在应用程序中调用该DLL以能够加载并执行Iris虚拟机;同时,由于该动态连接库DLL提供了用于开发的导出函数,因此开发者也能够引用同一个动态连接库,进行扩展编写(编写为另外一个DLL),这样一来,就可以在Iris虚拟机运行过程中动态加载此扩展了。
能运行Iris语言的虚拟机的实现以及Iris语言加载扩展、嵌入到图形引擎的实现包括如下步骤:
(1)对于不同的平台,选定不同的宿主语言作为开发语言(即开发虚拟机的语言与开发引擎的语言相同);
(2)根据编译原理中对3-型语言的处理方法或者直接使用如lex/flex这样的自动生成工具生成词法分析器,从脚本文件中读入脚本文本,分析成TOKEN流并传给语法分析器;
(3)根据编译原理中对2-型语言的处理方法或者直接使用如yacc/bison这样的自动生成工具生成语法分析器,对(2)中接收到的TOKEN流进行分析,生成语法分析树,并传给中间代码生成器;
(4)根据编译原理中对语法分析树的处理方法,编写中间代码生成器,根据具体的语义将(3)中得到的语法分析树转换为四元式序列,并传给优化器;
(5)根据编译原理中的编译优化方法,编写优化器,将(4)中得到的四元式序列进行优化处理,处理完后的四元式序列传给虚拟机字节码生成器;
(6)根据Iris虚拟机字节码规范,将(5)中得到的四元式一一对应地翻译为Iris虚拟机字节码,完成虚拟机字节码生成器的编写,并将字节码序列传给虚拟机执行部分;
(7)根据Iris虚拟机字节码规范,对表3中的所有Iris虚拟机字节码进行实现(即让每一条字节码都有对应的动作),虚拟机需要拥有表4中所列出的栈和寄存器结构,最后将6中传来的字节码序列进行一一进行译码,然后从头到尾地执行。
(8)将Iris虚拟机中可用于第三方扩展编写的部分(比如如何从外部定义一个类、定义一个方法并传给Iris虚拟机)封装成接口并对外部暴露(如把整个虚拟机编译成DLL)。
(9)编写Iris扩展的时候开发者使用到上述Iris虚拟机的接口,使用到这些接口的Iris扩展编写完毕后,开发者将可以在Iris脚本中直接加载这些扩展,完成Iris语言的嵌入工作。
关于Iris 2D图形引擎跨平台部署如图4所示。当开发者通过编写Iris脚本完成了游戏的开发之后,他就可以把自己的应用快速地进行跨平台部署了。开发者所需要交付给用户的有这样一些内容:图形引擎本身、开发者编写的脚本、图形引擎所需要的资源(比如图片)。对于不同的平台用户需要部署或者安装相应的Iris 2D图形引擎,包括图形引擎和Iris虚拟机两个部分,这是无需开发者关心的,它相当于图形引擎的一个运行环境,只需要进行安装部署即可。
开发者只需要将脚本和资源交付给用户,用户在他自己的平台上打开Iris图形引擎,引擎将会加载开发者编写的脚本和资源,就能够在本平台上输出图形了。
对于用户而言,他所需要做的操作仅仅是打开Iris 2D图形引擎应用,接下来的工作则由Iris 2D来完成。
接下来完成Iris 2D图形引擎的工作包括:读入开发者编写的脚本、虚拟机执行脚本、虚拟机根据脚本中的图形命令转而去调用已经封装好的宿主语言的相应接口以操作图形引擎、图形引擎根据被调用的接口执行相应的底层图形处理、最后输出图形。这样子就完成了跨平台部署的工作。
开发的Iris 2D图形引擎应用部署到不同平台上的具体的实现包括如下步骤:
(1)根据用户目标平台的不同开发者将对应的Iris 2D图形引擎部署安装到用户的机器上;
(2)开发者将图形引擎所需要的资源、脚本交付给用户;
(3)用户在自己的平台上启动Iris 2D图形引擎;
(4)Iris 2D图形引擎自动加载开发者提供的脚本;
(5)Iris虚拟机执行脚本;
(6)虚拟机根据脚本中的图形命令转而去调用已经封装好的数组语言的相应接口;
(7)图形引擎根据被调用的接口执行相应的底层图形处理;
(8)输出图形。
以上所述仅为本发明的较佳实例而已,并不用于限制本发明,凡在本发明的原则和精神之内所做的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

Claims (6)

1.一种Iris 2D图形引擎的实现方法,其特征在于,包括如下步骤:
(1)对不同的平台选定不同的底层编程接口,利用宿主语言开发出对应平台上的图形引擎,所述图形引擎提供用于外部调用的宿主语言接口;
(2)由步骤(1)中的宿主语言开发出对应平台上的Iris语言虚拟机,该虚拟机提供用于第三方扩展的宿主语言接口;
(3)通过调用步骤(1)中的图形引擎所暴露出的接口,用宿主语言编写Iris语言虚拟机的扩展;
(4)使用时在Iris脚本中加载所述扩展,将IRIS语言嵌入到图形引擎,进行图形引擎的控制,进而完成图形的渲染工作。
2.根据权利要求1所述的一种Iris 2D图形引擎的实现方法,其特征在于,步骤(1)中所述底层编程接口具体包括:Windows平台上采用DirectX 11图形编程接口,使用C++语言进行开发;Andriod平台上采用OpenGL ES图形编程接口,使用Java语言进行开发。
3.根据权利要求1所述的一种Iris 2D图形引擎的实现方法,其特征在于,步骤(2)中所述Iris语言虚拟机包括前端和后端两个部分;
所述前端包括词法分析器、语法分析器、中间代码生成器、优化器、虚拟机字节码生成器这几个部分,基于编译原理中的成果,完成读入用Iris语言编写的脚本文件,将其中的脚本内容逐步转化为Token、语法分析树、四元式中间代码,然后进行代码优化,最后输出为Iris语言虚拟机字节码;
所述后端是通过读取前端送来的字节码序列,从头到尾逐一进行字节码的翻译与执行,完成脚本程序的执行。
4.根据权利要求1或3所述的一种Iris 2D图形引擎的实现方法,其特征在于,步骤(1)中所述图形引擎的实现包括如下步骤:
(1-1)对不同的平台选定具体的底层图形编程接口;
(1-2)对不同的平台选定具体的宿主语言;
(1-3)采用宿主语言对底层图形编程接口进行封装,实现所需类与模块的功能;
(1-4)将实现出来的功能对外暴露出接口,以便于外部第三方调用。
5.根据权利要求1所述的一种Iris 2D图形引擎的实现方法,其特征在于,步骤(2)与步骤(4)中所述的能够运行Iris语言的虚拟机的实现以及在Iris脚本中加载所述扩展、将Iris语言嵌入到图形引擎的具体实现包括如下步骤:
(4-1)对于不同的平台,选定不同的宿主语言作为开发语言,即开发虚拟机的语言与开发图形引擎的语言相同;
(4-2)根据编译原理中对3-型语言的处理方法或者直接使用lex/flex生成词法分析器,从脚本文件中读入脚本文本,分析成TOKEN流并传给语法分析器;
(4-3)根据编译原理中对2-型语言的处理方法或者直接使用yacc/bison生成语法分析器,对(4-2)中接收到的TOKEN流进行分析,生成语法分析树,并传给中间代码生成器;
(4-4)根据编译原理中对语法分析树的处理方法,编写中间代码生成器,根据具体的语义将(4-3)中得到的语法分析树转换为四元式序列,并传给优化器;
(4-5)根据编译原理中的编译优化方法,编写优化器,将(4-4)中得到的四元式序列进行优化处理,处理完后的四元式序列传给虚拟机字节码生成器;
(4-6)根据Iris虚拟机字节码规范,将(4-5)中得到的四元式一一对应地翻译为Iris虚拟机字节码,完成虚拟机字节码生成器的编写,并将字节码序列传给虚拟机执行部分;
(4-7)根据Iris虚拟机字节码规范,对Iris虚拟机的所有指令字节码进行实现,即让每一条字节码都有对应的动作,虚拟机需要栈和寄存器结构,最后将(4-6)中传来的字节码序列一一进行译码,然后从头到尾地执行;
(4-8)将Iris虚拟机中可用于第三方扩展编写的部分封装成接口并对外部暴露;
(4-9)编写Iris扩展的时候开发者使用到上述Iris虚拟机的接口,使用到这些接口的Iris扩展编写完毕后,开发者将可以在Iris脚本中直接加载这些扩展,完成Iris语言的嵌入工作。
6.根据权利要求1所述的一种Iris 2D图形引擎的实现方法,其特征在于,还包括将Iris2D图形引擎应用部署到不同的平台上,实现方法包括如下步骤:
(5-1)根据用户目标平台的不同开发者将对应的Iris 2D图形引擎部署安装到用户的机器上;
(5-2)开发者将图形引擎所需要的资源、脚本交付给用户;
(5-3)用户在自己的平台上启动Iris 2D图形引擎;
(5-4)Iris 2D图形引擎自动加载开发者提供的脚本;
(5-5)Iris虚拟机执行脚本;
(5-6)虚拟机根据脚本中的图形命令转而去调用已经封装好的数组语言的相应接口;
(5-7)图形引擎根据被调用的接口执行相应的底层图形处理;
(5-8)输出图形。
CN201610173894.3A 2016-03-24 2016-03-24 一种Iris 2D图形引擎的实现方法 Expired - Fee Related CN105867911B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610173894.3A CN105867911B (zh) 2016-03-24 2016-03-24 一种Iris 2D图形引擎的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610173894.3A CN105867911B (zh) 2016-03-24 2016-03-24 一种Iris 2D图形引擎的实现方法

Publications (2)

Publication Number Publication Date
CN105867911A CN105867911A (zh) 2016-08-17
CN105867911B true CN105867911B (zh) 2019-04-02

Family

ID=56624858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610173894.3A Expired - Fee Related CN105867911B (zh) 2016-03-24 2016-03-24 一种Iris 2D图形引擎的实现方法

Country Status (1)

Country Link
CN (1) CN105867911B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572818B (zh) * 2017-03-08 2021-07-23 斑马智行网络(香港)有限公司 一种用户界面渲染方法及装置
CN110825467B (zh) * 2018-08-09 2023-10-24 北京微播视界科技有限公司 渲染方法、装置、硬件装置和计算机可读存储介质
CN109697060B (zh) * 2018-12-29 2022-08-26 广州方硅信息技术有限公司 视频特效系统及其生成方法、装置、设备和存储介质
CN111408138B (zh) * 2019-01-04 2023-07-07 厦门雅基软件有限公司 基于游戏引擎的渲染方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826746B2 (en) * 2001-03-08 2004-11-30 International Business Machines Corporation Debugger probe for object oriented programming
CN102508648A (zh) * 2011-09-23 2012-06-20 北京像素软件科技股份有限公司 一种图形引擎实现方法
CN102880465A (zh) * 2012-08-31 2013-01-16 江苏景云云计算有限公司 一种基于OpenGL ES的嵌入式图像方法
CN105005495A (zh) * 2015-06-23 2015-10-28 珠海金山网络游戏科技有限公司 一种游戏引擎

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6826746B2 (en) * 2001-03-08 2004-11-30 International Business Machines Corporation Debugger probe for object oriented programming
CN102508648A (zh) * 2011-09-23 2012-06-20 北京像素软件科技股份有限公司 一种图形引擎实现方法
CN102880465A (zh) * 2012-08-31 2013-01-16 江苏景云云计算有限公司 一种基于OpenGL ES的嵌入式图像方法
CN105005495A (zh) * 2015-06-23 2015-10-28 珠海金山网络游戏科技有限公司 一种游戏引擎

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IRIS 脚本语言设计;YamazakiRyusa;《https://www.guokr.com/blog/113998/》;20120311;第7-13页
嵌入式3D图形开始流行,但2D技术仍占据重要地位;佚名;《http://www.nxpic.org/article/id315465?p=1》;20121129;全文
机载高性能图形引擎技术研究;孔渊;《http://www.doc88.com/p­9042696659389.html》;20141226;第3页

Also Published As

Publication number Publication date
CN105867911A (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
Troelsen Pro C# 2008 and the. NET 3.5 Platform
CN105867911B (zh) 一种Iris 2D图形引擎的实现方法
EP2463771B1 (en) Method for translating a cobol source program into readable and maintainable program code in an object oriented second programming language
Pickering Language-oriented programming
US8327328B2 (en) System and method for creating target byte code
US7844958B2 (en) System and method for creating target byte code
US6185728B1 (en) Development system with methods for type-safe delegation of object events to event handlers of other objects
Balaguruswamy Programming with Java-A Primer
CN111309292B (zh) 一种基于MATLAB/Simulink的全模型可执行程序构建方法
Charles et al. Accelerating the creation of customized, language-specific IDEs in Eclipse
Skansholm Java from the Beginning
Bull et al. An architecture to support model driven software visualization
Mallen et al. Compiler construction with a dash of concurrency and an embedded twist
George et al. Programming language inter-conversion
Tröger Specification-driven dynamic binary translation
Antebi et al. Cross-compiling android applications to windows phone 7
Maier et al. Supercharge a language runtime!
Cepa et al. Language support for model-driven software development
KR100949824B1 (ko) 응용프로그램의 그래픽 소스 코드를 가변형 벡터 그래픽코드로 변환하는 장치 및 방법
Kirby Using reflection to support type-safe evolution in persistent systems
Fahlman Common lisp
CN116306918A (zh) 基于mlir的fpga神经网络模型部署方法
Liang et al. A mobile integrated development environment for C programming
Beebe A Complete Bibliography of Publications in the C Users Journal (1988–1994) and the C/C++ Users Journal: 1994–1999
Wirth Box English-preparing for CS1

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190402

Termination date: 20200324

CF01 Termination of patent right due to non-payment of annual fee