【技术实现步骤摘要】
本专利技术涉及使用OpenGL|ES图形标准用于移动设备(比如G4M类型的设备)的三维(3D)应用开发,具体地说,涉及用来允许在OpenGL|ES实现之上的OpenGL应用的运行的翻译器。
技术介绍
3D图形标准OpenGL常用于在个人计算机(PC)环境中的图形绘制。图形标准OpenGL|ES是把移动设备、比如移动电话和其它手机作为目标的OpenGL标准的清淡版本。尽管建立了OpenGL|ES标准,但存在一个问题即OpenGL|ES标准太新了以致在市场中基于该标准的3D应用非常少。但是,确实存在相当大数量的用OpenGL为个人计算机编写的遗留应用。直到更适合的基于OpenGL|ES标准的应用在市场上出现,消费者想要在他们的移动设备上有机会运行许多基于OpenGL标准的应用。然而,在OpenGL和OpenGL|ES之间的区别阻止这发生到任何消费者满意的程度,特别是对图形密集应用、比如3D游戏而言更是如此。在所有的基本OpenGL API(应用编程接口,有时称作命令)中,在OpenGL|ES中仅仅保留了约10%没有变化。在OpenGL|ES中保留了约50%的OpenGL API有微小变化,比如允许较少、不同或新的参数。剩余的基本OpenGL API在OpenGL|ES中根本不支持。关于基于OpenGL的应用和OpenGL|ES绘制引擎实现,对于OpenGL|ES完全支持的第一类的API,由OpenGL应用发送的相关命令能直接发送到OpenGL|ES图形绘制实现。然而,对于受限支持的OpenGL命令,例如其中仅仅支持受限的参数,以及对于根本不被支持的Open ...
【技术保护点】
一种在OpenGL和OpenGL|ES之间的翻译过程,包括:存储可能由在翻译期间使用的OpenGL|ES函数改变的全局GL状态;通过用OpenGL|ES命令代替OpenGL命令来翻译以得到OpenGLAPI;为O penGL|ES实现传递OpenGL|ESAPI;以及恢复先前存储的所述全局GL状态。
【技术特征摘要】
1.一种在OpenGL和OpenGL|ES之间的翻译过程,包括存储可能由在翻译期间使用的OpenGL|ES函数改变的全局GL状态;通过用OpenGL|ES命令代替OpenGL命令来翻译以得到OpenGLAPI;为OpenGL|ES实现传递OpenGL|ES API;以及恢复先前存储的所述全局GL状态。2.一种把在OpenGL中使用glTexGen命令的自动纹理坐标生成翻译到OpenGL|ES的方法,包括在所述命令glTexGen的翻译之前存储纹理坐标数组状态和数据;使用在所述命令glTexGen中提供的信息,决定应翻译哪个纹理坐标元素(s,t,r,q)和应实现哪个翻译算法;实现所选择的翻译算法以计算所述纹理坐标元素(s,t,r,q);存储所生成的纹理坐标数据;把含有所存储的纹理坐标数据的glEnableClientState和glTexCoordPointer命令传递到OpenGL|ES实现;以及恢复先前存储的所述纹理坐标数组状态和数据。3.如权利要求2所述的方法,其特征在于,决定还包括决定需要哪个纹理对象来生成所述纹理坐标。4.如权利要求2所述的方法,其特征在于,所述OpenGL|ES实现支持顶点数组。5.一种把在OpenGL中使用glTexGen命令的自动纹理坐标生成翻译到OpenGL|ES的方法,包括截取包括指向顶点属性数据数组的指针的OpenGLglVertexPointer(或glVertex)、glNormalPointer(或glNormal)函数的调用;保存用于顶点坐标和法线数据的参数值;以及响应所述glTexGen命令,为每个顶点执行以下过程在目系中使用模型图矩阵计算顶点坐标;计算球面纹理坐标(s,t);激活纹理坐标数组;以及把指针数组发送到OpenGL。6.如权利要求5所述的方法,其特征在于,还包括把含有来自所述纹理坐标数组的数据的glEnableClientState和glTexCoordPointer命令传递到OpenGL|ES实现。7.如权利要求6所述的方法,其特征在于,所述OpenGL|ES实现支持顶点数组。8.一种把在OpenGL中画几何对象的glBegin/glEnd范例翻译成在OpenGL|ES中画几何对象的顶点数组的方法,包括存储GL状态和数组数据;把在OpenGL中的复杂图元四边形和多边形转换成要在OpenGL|ES中画出的较小块的三角形;关于三角形准备用于颜色、法线和纹理坐标的必需数组数据;在OpenGL|ES中根据所述数组数据作为对象绘制所述三角形;以及恢复先前存储的GL状态和数组数据。9.如权利要求8所述的方法,其特征在于,转换复杂图元四边形和多边形包括测试用于OpenGL的方式是否为GL_QUAD_STRIP,并且如果是这样,则把OpenGL GL_QUAD_STRIP方式改为在OpenGL|ES中的GL_TRIANGLE_STRIP方式。10.如权利要求8所述的方法,其特征在于,转换复杂图元四边形和多边形包括测试用于OpenGL的方式是否为GL_QUADS,并且如果是这样,则把OpenGL GL_QUADS方式改为在OpenGL|ES中的GL_TRIANGLES方式。11.如权利要求8所述的方法,其特征在于,转换复杂图元四边形和多边形包括测试用于OpenGL的方式是否为GL_POLYGON,并且如果是这样,则把OpenGL GL_POLYGON方式改为在OpenGL|ES中的GL_TRIANGLE_FAN方式。12.如权利要求8所述的方法,其特征在于,准备包括从OpenGL命令glVertex、glColor、glNormal和glTexCoord收集数组数据。13.如权利要求8所述的方法,其特征在于,绘制包括使用OpenGL|ES glDrawArray或glDrawElements命令绘制所述三角形。14.如权利要求8所述的方法,其特征在于,还包括截取指向顶点属性数据数组的OpenGL指针;保存与所截取的指针相关的参数值;以及在所述glBegin/glEnd范例内,用OpenGL|E...
【专利技术属性】
技术研发人员:C夸尔,李海珍,陈国基,
申请(专利权)人:意法半导体研发上海有限公司,
类型:发明
国别省市:31[中国|上海]