OPenGL ES 1.X 面向功能固定的硬件所涉及并提供加速支持,图形质量以及性能标准。

OpenGL ES2.X则提供包括着色器技术在内的全编程3D图形算法。----硬件要求比较高。

OpenGL ES-SC 专为有高安全型需求的特殊市场精心打造的。

OPenGL ES 与OpenGL的不同

1 浮点数和定点数

OPenGL ES 不支持double型双精度浮点数。有单精度浮点数代替。

2 引入新的定点数据类型

32位整型数据才存储,高16位表示整数,低16位表示小数。

浮点数乘以2的16次方------>转化为定点数;

定点数除以2的16次方,就转化成浮点数。

3 图元

OpenGL ES仅仅支持三角,线,点。

四角和多边形不支持。

4 变化和光照

OpenGL ES 丢弃颜色矩阵堆栈,并限定模型视图矩阵堆栈的深度为16;原生转化矩阵不被支持;纹路坐标不被支持。对于颜色,只支持RGBA模式,不支持索引色。

5 纹理映射

openGL ES仅仅支持2D纹理映射,但是1D映射可以用2D纹理来模拟。

3d----开销太大----摒弃。

openGL ES支持调色板纹理,这是一种高效纹理数据的方式。

6 帧缓存操作

只保留渲染缓存,累积缓存被丢弃。

OpenGL Demo1

 import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle; import com.doodev.chapter12.renderer.HelloOpenGLESRenderer; public class HelloOpenGLES extends Activity {
/**
* 这里是我们的OpenGL ES渲染View
*/
private GLSurfaceView mGLSurfaceView; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); /**
* 初始化OpenGL ES View
*/
mGLSurfaceView = new GLSurfaceView(this);
/**
* 设置渲染器为我们具体实现的渲染器
*/
mGLSurfaceView.setRenderer(new HelloOpenGLESRenderer()); setContentView(mGLSurfaceView);
} @Override
protected void onResume() {
super.onResume();
/**
* 这里需要同步调用OpenGL ES View的onResume操作, 通知底层OpenGL ES从挂起状态中返回
*/
mGLSurfaceView.onResume();
} @Override
protected void onPause() {
super.onPause();
/**
* 这里需要同步调用OpenGL ES View的onPause操作, 通知底层OpenGL ES停止后台更新,处于挂起状态
*/
mGLSurfaceView.onPause();
}
}
package com.doodev.chapter12.renderer;
import android.opengl.GLSurfaceView;
import android.opengl.GLU;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10; public class HelloOpenGLESRenderer implements GLSurfaceView.Renderer { /**
*
* @Name onDrawFrame
* @Description TODO(绘图操作)
* @param gl
* @see android.opengl.GLSurfaceView.Renderer#onDrawFrame(javax.microedition.khronos.opengles.GL10)
* @Date 2013-12-3 上午10:02:42
*
*/
@Override
public void onDrawFrame(GL10 gl) {
// 一般的opengl程序,首先要做的就是清屏
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // 紧接着设置模型视图矩阵
gl.glMatrixMode(GL10.GL_MODELVIEW);
GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1, 0); // 渲染物体
} /**
* @Name onSurfaceChanged
* @Description TODO(当窗口的大小发生改变时)
* @param gl
* @param width
* @param height
* @see android.opengl.GLSurfaceView.Renderer#onSurfaceChanged(javax.microedition.khronos.opengles.GL10, int, int)
* @Date 2013-12-3 上午10:55:22
*
*/
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
/*设置OPenGL场景大小*/
gl.glViewport(0, 0, width, height); float ratio = (float) width / height;
//设置投影矩阵----为场景增加透视
gl.glMatrixMode(GL10.GL_PROJECTION);
//近似重置----将矩阵恢复到原始状态
gl.glLoadIdentity();
//设置视口大小
gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
gl.glMatrixMode(GL10.GL_MODELVIEW);
}
/**
*
* @Name onSurfaceCreated
* @Description TODO(对openGL做初始化工作)
* @param gl
* @param config
* @see android.opengl.GLSurfaceView.Renderer#onSurfaceCreated(javax.microedition.khronos.opengles.GL10, javax.microedition.khronos.egl.EGLConfig)
* @Date 2013-12-3 上午9:44:43
*
*/
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
/*告诉系统对透视进行修正*/
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
/*设置最亮的颜色
* arg1--red
* arg2--green
* arg3--blue
* 最小值0.0 做大1.0
* */
gl.glClearColor(1, 1, 1, 1);
/*设置阴影平滑*/
gl.glShadeModel(GL10.GL_SMOOTH);
/*设置深度缓存*/
gl.glClearDepthf(1.0f);
/*设置深度缓存*/
gl.glEnable(GL10.GL_DEPTH_TEST);
/*设置深度测试类型*/
gl.glDepthFunc(GL10.GL_LEQUAL); }
}

初探OpenGL(一)的更多相关文章

  1. 1.openGL 初探

    GLEW, GLFW和GLM介绍 现在你有了工程,就让我们开始介绍下工程所用到的开源库和为啥需要这些. The OpenGL Extension Wrangler (GLEW)是用来访问OpenGL ...

  2. 初探 Qt Opengl【2】

    最近在研究QOPengl QGraphicsView QGraphicsItemQGraphicsScene不过也只是皮毛,也不是做什么技术贴,就是记录一下自己在其中遇到的问题,和自己新学到的东西. ...

  3. 初探Qt Opengl【1】

    最近一直在学习Qt的opengl绘图,看到好多资源都是关于以前的旧版本的, 我将我这几天学的的部分关于opengl的做个总结,也希望对需要学习的人有一定的帮助 在我的学习中,我主要用到一下三个方法 # ...

  4. CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探

    CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...

  5. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  6. 基于Cocos2d-x学习OpenGL ES 2.0系列——编写自己的shader(2)

    在上篇文章中,我给大家介绍了如何在Cocos2d-x里面绘制一个三角形,当时我们使用的是Cocos2d-x引擎自带的shader和一些辅助函数.在本文中,我将演示一下如何编写自己的shader,同时, ...

  7. Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU Demo, RK OpenglES 填坑,编译bazel)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  8. 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)

    0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...

  9. [OpenGL超级宝典]专栏前言

    我小时候的梦想呢,是做宇航员或者科学家或者是做一款属于自己的游戏,后来前面两个梦想都没有实现,于是我就来实现我的第三个梦想了,,,我呢,也算是零基础,因为我的专业是物联网工程,这个专业覆盖面之广,简直 ...

随机推荐

  1. JQuery 模糊匹配

    [属性名称]         匹配包含给定属性的元素 [att=value]       匹配包含给定属性的元素      [att*=value]     模糊匹配      [att!=value ...

  2. H3C SecPath 防火墙端口回流

    外网IP地址可以通过域名访问内外800端口网站,内网地址不可以,需要做回流 <<内网口.外网口都需要做nat映射>>定义ACL3001acl number 3001rule 0 ...

  3. javascript单例模式(懒汉 饿汉)

    第一种:懒汉模式 var Singleton=(function(){ var instantiated; //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢 functi ...

  4. AngularJs应用

    引用angularjs文件 AngularJS 应用组成如下:View(视图), 即 HTML.Model(模型), 当前视图中可用的数据.Controller(控制器), 即 JavaScript ...

  5. 转:LoadRunner响应时间与用户体验时间不一致问题的深入分析

    在新一代一期项目非功能测试过程中,我们发现了LoadRunner测试响应时间与客户端实际用户体验时间不一致的现象.例如员工渠道上线后,客户体验时间远远超过了LoadRunner测试响应时间.本文针对这 ...

  6. openstack私有云布署实践【4.2 上层代理haproxy+nginx配置 (办公网测试环境)】

    续上一节说明 一开始我也是使用haproxy来做的,但后来方式改了,是因为物理机controller的高配置有些浪费,我需要1组高可用的上层nginx代理服务器来实现其它域名80代理访问,很多办公网测 ...

  7. 深入了解——CSS3新增属性

    CSS3 选择器(Selector) 写过 CSS 的人应该对 CSS 选择器不陌生,我们所定义的 CSS 属性之所以能应用到相应的节点上,就是因为 CSS 选择器模式.参考下述代码: 清单 1. C ...

  8. @InitBinde的作用

    @InitBinder用于在@Controller中标注于方法,表示为当前控制器注册一个属性编辑器或者其他,只对当前的Controller有效

  9. java--方法重写与重载

    方法重写 /*方法重写(一般多用在继承上) 定义:它是指子类和父类的关系,子类重写了父类的方法. 两个方法返回值.方法名.参数列表必须完全一致! 出现原因:在Java中,子类可继承父类中的方法,而不需 ...

  10. Node.js:url

    在node运行环境中输入url: > url url { parse: [Function: urlParse], resolve: [Function: urlResolve], resolv ...