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. 元素的BFC特性与自适应布局

    一.BFC元素简介与基本表现. BFC全程"Block Formatting Context",中文为"块级格式化上下文".记住一句话:BFC元素特性表现原则就 ...

  2. VC6.0 通过崩溃地址中找到异常代码行

    来源:http://blog.csdn.net/mydeardingxiaoli/article/details/20371585 这是从“VC编程经验总结7”中转出来的借花献佛——如何通过崩溃地址找 ...

  3. spring+ibatis问题1—— 程序报错:java.sql.SQLException: Io 异常: Connection reset by peer, socket write error; ”或“java.sql.SQLException 关闭的连接”异常

    转自:http://blog.sina.com.cn/s/blog_1549fb0710102whz2.html spring+ibatis程序测试时报错:java.sql.SQLException: ...

  4. gridview XML

    GridView动态添加模板列   http://blog.csdn.net/wljhk2006/article/details/24723219 XML与DataTable互转类 http://bl ...

  5. SpringMVC之ModelAndView的简单使用

    可以使用ModelAndView来跳转页面和传值,具体用法如下: 构造方法的参数是要跳转的页面! 通过 ModelAndView 的对象的 AddObject(K,V)方法,可以传入数据! 获得mod ...

  6. javascript DOM对象(1)

    0.文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法. DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 将HTML代码分解为D ...

  7. Webpack学习笔记(一)

    转载http://zhaoda.net/webpack-handbook/module-system.html 转载http://www.cnblogs.com/vajoy/p/4650467.htm ...

  8. Android设置对话框去除黑边

    在res/values/styles.xml文件中添加如下内容 <style name="dialog" parent="@android:style/Theme. ...

  9. HDU 5860 Death Sequence

    用线段树可以算出序列.然后o(1)询问. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<c ...

  10. 用VulApps快速搭建各种漏洞环境

    项目主页 https://github.com/Medicean/VulApps 项目介绍 收集各种漏洞环境,统一采用 Dockerfile 形式.DockerHub 在线镜像地址 获取并使用相关镜像 ...