zoukankan      html  css  js  c++  java
  • OpenGL ES 1.0与OpengGL的区别

    OpenGL ES 1.0是专门针对嵌入式系统设计的3D图形库,它是从OpenGL 1.3发展而来的。它是OpenGL的一个子集,但也不仅仅是子集,还添加了OpenGL没有的一些内容。两者的主要区别如下:

        ★ 去掉了多余的API

        考虑到灵活性,OpenGL设计了大量不同的函数来完成同一件事情。比如 glColr(),就有30多种不同的形式,而区别仅在于参数的数量和类型不同。ES去掉了大部分这种API,仅留下了一些常用的和一般形式的。比如ES只支持glNormal3f, glColor4f, glMultiTexCoord4f。

        ★ 去掉了多余的功能

        有时,OpenGL会有不同的方法来做同一件简单的事情。比如 glBegin()/glEnd()与顶点数组都可以用来设置顶点。ES只保留了最有效的顶点数组的方法。再比如,ES中对多边形只支持三角形;多边性mode也只有填充方式;不支持index color;只支持RGBA模式等

        ★ 对代价大的功能做了限制

        OpenGL的很多功能实现起来要花费较大的代价,但是又很重要,比如纹理贴图。ES中要么去掉它(去掉了对1D,3D纹理的支持),要么让它是可选的。

        ★ 去掉了一些数据类型

        大部分的嵌入式设备都不会使用浮点计算,因此ES去掉了对double类型的支持。因为OpenGL 1.3中有一些函数只接受double类型,这些函数就被改为接受float类型。例如:glTranslatef, glRotatef, glScalef, glFrustumf, glOrthof, glDepthRangef, glClearDepthf.

        ★ 精简了一些API所支持的数据类型

        OpenGL有的函数可以支持多种数据类型,考虑到嵌入式系统的限制,ES定义了新的API,这些新的API只支持常用的几种数据类型。比如,OpenGL 1.3中的一些函数可以接收整数或short型,在ES中就改成只接收byte类型。

        ★ 去掉了对动态状态查询的功能

        OpenGL的状态可以随时查询,但是实现起来比较复杂。考虑到它不是那么重要,ES中就只支持对静态状态的查询。

        ★ 没有GLU

        留给厂商去自由设计以前GLU中支持的功能。

        ★ 设计了新的API来支持定点数

        glNormal3x, glMultiTexCoord4x, glColor4x, glDepthRangex, glLoadMatrixx, glMultMatrixx, glRotatex, glScalex, glTranslatex, glFrunstumx, glOrthox, glMaterialx, glLightx, glLightModelx, glPointSizex, glLineWidthx, glPolygonOffsetx, glTexParameterx, glTexEnvx, glFogx, glSampleCoverage, glAlphaFuncx, glClearColorx, glClearDepthx.

  • 相关阅读:
    Adventure C CF-665E(字典树、二进制)
    实验7投资问题
    Beautiful Array CF-1155D(DP)
    Salary Changing CF-1251D(二分)
    Beautiful Sets of Points CF-268C(乱搞)
    Vasya And Array CF1187C(构造)
    Tree Painting CF-1187E(换根DP)
    Vus the Cossack and Numbers CF-1186D(思维)
    Tree POJ-1741(点分治+树形DP)
    Magical Girl Haze 计蒜客-A1958(分层最短路)
  • 原文地址:https://www.cnblogs.com/jacktu/p/1738444.html
Copyright © 2011-2022 走看看