package com.xhm.getaccount; import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10; import android.content.Context;
import android.opengl.GLSurfaceView;
import android.opengl.GLU;
import android.opengl.GLSurfaceView.Renderer; /**
* 控制显示界面,画,变幻,和创建
*
* @author Administrator
*
*/
public class MyOpenGL extends GLSurfaceView implements Renderer {
private Context mContext; public MyOpenGL(Context context) {
super(context);
// TODO Auto-generated constructor stub
// 设置渲染对象
this.mContext = context;
setRenderer(this);
} @Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// TODO Auto-generated method stub
/**
* 设置背景颜色,深度,和模版缓存,下边的gl.Clear()使用。
*/
gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
gl.glClearDepthf(1.0f);
// gl.glClearStencil(sourceID);
/**
* 两点之间颜色绘制方式
*
* GL_SMOOTH:如果两点的颜色不同则会过度适配
*
* GL_FLAT:如果两点的颜色不同不会过度适配
*/
gl.glShadeModel(GL10.GL_SMOOTH);
/**
* 开启深度测试
*/
gl.glEnable(GL10.GL_DEPTH_TEST);
/**
* GL_NEVER:永不绘制
*
* GL_LESS:如果目标像素z值<当前像素z值,则绘制目标像素
*
* GL_EQUAL:如果目标像素z值=当前像素z值,则绘制目标像素
*
* GL_LEQUAL:如果目标像素z值<=当前像素z值,则绘制目标像素
*
* GL_GREATER :如果目标像素z值>当前像素z值,则绘制目标像素
*
* GL_NOTEQUAL:如果目标像素z值<>当前像素z值,则绘制目标像素
*
* GL_GEQUAL:如果目标像素z值>=当前像素z值,则绘制目标像素
*
* GL_ALWAYS:总是绘制
*/
gl.glDepthFunc(GL10.GL_LEQUAL);
/**
* 指定一个要控制其行为的功能的代指符号常量. 可接受的值有GL_GENERATE_MIPMAP_HINT(唯一)
*
* GL_FASTEST 选择最有效率的选项
*
* GL_NICEST 选择最正确或者最高质量的选项
*
* GL_DONT_CARE 不指定倾向
*/
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
} @Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
// TODO Auto-generated method stub
/**
* 在屏幕的哪个区域显示,可以定义多个区域用于显示
*/
gl.glViewport(0, 0, width, height);
/**
* 对某个矩阵进行操作,GL中的物体分为贴图,物体,阴影三个。
*
* GL_PROJECTION是对投影矩阵操作
*
* GL_MODELVIEW是对模型视景矩阵操作
*
* GL_TEXTURE是对纹理矩阵进行随后的操作
*
*/
gl.glMatrixMode(GL10.GL_PROJECTION);
/**
* 调用glLoadIdentity()之后,您实际上将当前点移到了屏幕中心:类似于一个复位操作,
* 其等同于用单位矩阵调用glLoadMatrix()。但是,在一些情况下,glLoadIdentity()更加效率
*
* 1.X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从里至外。
*
* 2.OpenGL屏幕中心的坐标值是X和Y轴上的0.0f点。
*
* 3.中心左面的坐标值是负值,右面是正值。 移向屏幕顶端是正值,移向屏幕底端是负值。 移入屏幕深处是负值,移出屏幕则是正值。
*/
gl.glLoadIdentity();
/**
* 讲解 http://hi.baidu.com/korndorben/item/76c5020453f18212cc34ea90
*/
GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,
100.0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
} @Override
public void onDrawFrame(GL10 gl) {
// TODO Auto-generated method stub
/**
* 清理缓存到设置的背景属性
*/
gl.glClear(GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_COLOR_BUFFER_BIT);
} }

OpenGL ES andoid学习————1的更多相关文章

  1. OpenGL ES andoid学习————2

    package com.xhm.getaccount; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.F ...

  2. Android OpenGL ES 开发

    OpenGL(Open Graphics Library) 是开放图形库,是一个跨平台的图形 API.OpenGL ES(OpenGL for Embedded System)是专为移动端提供的一个子 ...

  3. [OpenGL ES 02]OpenGL ES渲染管线与着色器

    [OpenGL ES 02]OpenGL ES渲染管线与着色器 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循"署名-非商业用途-保持一致"创 ...

  4. OpenGL ES学习笔记(三)——纹理

    首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...

  5. OpenGL ES学习笔记(一)——基本用法、绘制流程与着色器编译

    首先声明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. 在Android.iOS等移动平台上 ...

  6. 从零开始学习OpenGL ES之一 – 基本概念

    我曾写过一些文章介绍iPhone OpenGL ES编程,但大部分针对的是已经至少懂得一些3D编程知识的人.作为起点,请下载我的OpenGL Xcode项目模板,而不要使用Apple提供的模板.你可以 ...

  7. OpenGL ES学习资料总结

    从今年春节后开始学习OpenGL ES,发现网上资料很有限,而且良莠不齐,所以整理了一下我学习时用到的资料和一些心得. 1. OpenGL ES1.x参考资料 把NEHE的教程移植到了Android上 ...

  8. 基于Cocos2d-x学习OpenGL ES 2.0之多纹理

    没想到原文出了那么多错别字,实在对不起观众了.介绍opengl es 2.0的不多.相信介绍基于Cocos2d-x学习OpenGL ES 2.0之多纹理的,我是独此一家吧.~~ 子龙山人出了一个系列: ...

  9. 基于Cocos2d-x学习OpenGL ES 2.0系列——纹理贴图(6)

    在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object).IBO(Index Buffer Object)和MVP(Modile-View-P ...

随机推荐

  1. Python扫描指定文件夹下(包含子文件夹)的文件

    扫描指定文件夹下的文件.或者匹配指定后缀和前缀的函数. 假设要扫描指定文件夹下的文件,包含子文件夹,调用scan_files("/export/home/test/") 假设要扫描 ...

  2. pandas判断缺失值的办法

    参考这篇文章: https://blog.csdn.net/u012387178/article/details/52571725 python pandas判断缺失值一般采用 isnull(),然而 ...

  3. vue-resource基本使用方法

    一.vue-resource特点 1.体积小:vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比jQuery的体积要小得多. 2.支持主流 ...

  4. Druid对比Impala/Shark

    Druid 和 Impala Shark 的对比取决于产品要求, 取决于系统是设计成做什么的 Druid 被设计成 一直在线, 高可用性    实时插入数据    分片分块形式的任意查询据我所知 Im ...

  5. SQL Server 高性能写入的一些经验总结

    转自:http://www.jb51.net/article/31162.htm 本篇博文将针对一些常用的数据库性能调休方法进行介绍,而且,为了编写高效的SQL代码,我们需要掌握一些基本代码优化的技巧 ...

  6. SqlServer--百度百科

    SQL是英文Structured Query Language的缩写,意思为结构化查询语言.SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标准协会)的规定,SQL被作为 ...

  7. What most young programmers need to learn

    In the past 7.5 years I have supervised over a dozen programming interns at Ronimo and have seen hun ...

  8. Spring HibernateTemplate

    HibernateTemplate利用模板设计模式,可将重复的opensession getcurrentsession工作省去,只将必要操作执行即可,其它的由spring来帮我们处理.   < ...

  9. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

  10. 关于Spring管理的类如何创建对象

    今天项目中出现了空指针错误,其实一看这个错误我就知道是哪里错了.而且以前也总是说,没有真正的改过啊.今天把改进方法和大家共享.现在我们的项目中,大多数我们的管理方式都是交由Spring去管理,至于好处 ...