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. 集成shareSDK的微信、QQ API导致cocoaPods找不到类symbol问题的解决方法

    因为shareSDK的微信和QQ API都只支持32位的,而cocoaPods默认要支持64位的,所以如果在工程中导入这两个API会出问题. 解决方法我就不转载啦,原文在这里: http://blog ...

  2. VS中,如何将存在于解决方案里,但是没有显示出来的文件(或文件夹)显示到项目中。

    不知道有没有人跟我一样,刚开始接触VS的时候,没有通过"右键->添加"产生文件,而是直接一些文件或者文件夹建在了项目的本地目录中. 导致最后这些文件(或文件夹)无法在项目中显 ...

  3. 从NPM到CNPM

    从NPM到CNPM   原文  http://www.cnblogs.com/hufeng/p/5166479.html 主题 npm 引用NPM网站上的一句话:npm loves you ! NPM ...

  4. 从头开始学Java【1】

    1:常见的DOS命令 盘符的切换 d:回车 目录的进入 cd javase cd javase\day01\code 目录的回退 cd.. cd\ 清屏 cls 退出 exit 创建目录 md 删除目 ...

  5. jqgrid参数

    jqGrid参数 名称 类型 描述 默认值 可修改 url string 获取数据的地址 datatype string 从服务器端返回的数据类型,默认xml.可选类型:xml,local,json, ...

  6. CSU 1640 机智的刷题方式

    完全背包 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...

  7. FZU 2195 检查站点

    求出根节点到每个叶子节点的距离,找到最大的.然后总权值减去最大叶子距离就是答案. GNU C++ AC Visual C++  TLE #include<stdio.h> #include ...

  8. 处理html页面元素工具类(HtmlAgilityPack.dll)的使用

    下载地址:http://htmlagilitypack.codeplex.com/ 1.添加HtmlAgilityPack.dll引用(引用类using HtmlAgilityPack;). 2.简单 ...

  9. C socket指南

    1.介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措? ...

  10. hdu_5908_Abelian Period(暴力)

    题目链接:hdu_5908_Abelian Period 题意: 给你n个数字,让你找出所有的k,使得把这n个数字分为k分,并且每份的数字种类和个数必须相同 题解: 枚举k,首先k必须是n的约数,然后 ...