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. iOS:Masonry介绍与使用

    Masonry介绍与使用实践:快速上手Autolayout   frame----->autoresing------->autoLayout-------->sizeClasses ...

  2. 利用“进程注入”实现无文件复活 WebShell

    引子 上周末,一个好兄弟找我说一个很重要的目标shell丢了,这个shell之前是通过一个S2代码执行的漏洞拿到的,现在漏洞还在,不过web目录全部不可写,问我有没有办法搞个webshell继续做内网 ...

  3. linux基础-第二十单元_计划任务crond服务

    第二十单元 计划任务crond服务 什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiW ...

  4. javascript快速入门9--引用类型

    引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现 ...

  5. 安装Node.js、npm和环境变量的配置

    由于Node.js平台是在后端运行JavaScript代码,所以,必须首先在本机安装Node环境. 一.安装Node.js 首先,从Node.js官网下载对应平台的安装程序,网速慢的童鞋请移步国内镜像 ...

  6. D3.js系列——元素操作和简单画布操作

    一.元素操作: 1.选择元素 select 和 selectAll,以及选择集的概念 var p = d3.select("body").select("p") ...

  7. mysql 将查询出来的某一字段组合成字符串

    select GROUP_CONCAT(id) as ids from yii_role_menu where roleId=1;

  8. Concise: Compressed ’n’ Composable Integer Set

    Word Aligned Hybrid (WAH) bitmap compression 下面是:Concise: Compressed ’n’ Composable Integer Set Figu ...

  9. 爬虫扒下 bilibili 视频信息

    B站算是对爬虫非常非常友好的网站啦! 修改转载已取得腾讯云授权 在以上两篇文章中我们已经在腾讯云服务器上搭建好了 Python 爬虫环境了,下一步就是在云服务器上爬上我们的爬虫,抓取我们想要的数据: ...

  10. Nginx 报错413 Request Entity Too Large 上传文件过大

    1.进入Nginx安装路径下的conf文件夹中(我的路径是:/usr/local/nginx/conf) 2.打开nginx.conf,在http大括号中第一行加语句:client_max_body_ ...