OpenGL ES andoid学习————1
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的更多相关文章
- OpenGL ES andoid学习————2
package com.xhm.getaccount; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.F ...
- Android OpenGL ES 开发
OpenGL(Open Graphics Library) 是开放图形库,是一个跨平台的图形 API.OpenGL ES(OpenGL for Embedded System)是专为移动端提供的一个子 ...
- [OpenGL ES 02]OpenGL ES渲染管线与着色器
[OpenGL ES 02]OpenGL ES渲染管线与着色器 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循"署名-非商业用途-保持一致"创 ...
- OpenGL ES学习笔记(三)——纹理
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...
- OpenGL ES学习笔记(一)——基本用法、绘制流程与着色器编译
首先声明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. 在Android.iOS等移动平台上 ...
- 从零开始学习OpenGL ES之一 – 基本概念
我曾写过一些文章介绍iPhone OpenGL ES编程,但大部分针对的是已经至少懂得一些3D编程知识的人.作为起点,请下载我的OpenGL Xcode项目模板,而不要使用Apple提供的模板.你可以 ...
- OpenGL ES学习资料总结
从今年春节后开始学习OpenGL ES,发现网上资料很有限,而且良莠不齐,所以整理了一下我学习时用到的资料和一些心得. 1. OpenGL ES1.x参考资料 把NEHE的教程移植到了Android上 ...
- 基于Cocos2d-x学习OpenGL ES 2.0之多纹理
没想到原文出了那么多错别字,实在对不起观众了.介绍opengl es 2.0的不多.相信介绍基于Cocos2d-x学习OpenGL ES 2.0之多纹理的,我是独此一家吧.~~ 子龙山人出了一个系列: ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——纹理贴图(6)
在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object).IBO(Index Buffer Object)和MVP(Modile-View-P ...
随机推荐
- Hive使用简介
---恢复内容开始--- 指定分隔符 HIVE输出到文件的分隔符 ,列与列之间是'\1'(ASCII码1,在vim里显示为^A),列内部随着层数增加,分隔符依次为'\2','\3','\4'等. 例: ...
- gcc static静态编译选项提示错误:/usr/lib/ld:cannot find -lc
在学习gcc静态库动态库编译的时候选用静态库编译时出错显示:/usr/lib/ld:cannot find -lc 百度:/usr/lib/ld:cannot find -lc多处给的解决方案为: 然 ...
- fl2440字符设备led驱动
首先要明白字符设备驱动注册的基本流程 当我们调用insomd命令加载驱动后,驱动程序从module_init函数开始执行:硬件初始化 -> 申请主次设备号 -> 定义fops(file_o ...
- 算法导论-散列表(Hash Table)-大量数据快速查找算法
目录 引言 直接寻址 散列寻址 散列函数 除法散列 乘法散列 全域散列 完全散列 碰撞处理方法 链表法 开放寻址法 线性探查 二次探查 双重散列 随机散列 再散列问题 完整源码(C++) 参考资料 内 ...
- replace的用法
http://blog.sina.com.cn/s/blog_9ed9ac7d0101ec1f.html replace 语句 如果存在,更新,否则,插入在使用REPLACE时,表中必须有唯一索引,而 ...
- ubuntu各版本代号(更新至15.04)及各版本下载地址等
版本号 代号 发布时间 15.04 Vivid Vervet 2015/04/22 14.10 Utopic Unicorn 2014/10/23 14.04 LTS Trusty Tahr 2014 ...
- Python——实现代理服务功能
代理服务原理很简单,就拿浏览器与web服务器来说.无非是A浏览器发request给B代理,B代理再把request把送给C web服务,然后C的reponse->B->A.要写web代理服 ...
- linux 单机跨进程通信
一般来说通过网络通信(比如tcp,udp)或者共享内存的方式肯定可以实现跨进程通信,但现在这里要说的是比较偏但实用的几个方法:利用unix域通信(普通网络连接),利用unix域通信(socketpai ...
- tcp/ip ---子网寻址
现在所有的主机都要求支持子网编址( RFC 950 [Mogul and Postel 1985]).不是把I P地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号. ...
- linux下 目录(扩容)挂载磁盘
1.常用命令 查看硬盘的分区 #sudo fdisk -l 查看IDE硬盘信息 #sudo hdparm -i /dev/hda 查看STAT硬盘信息 #sudo hdparm -I /dev/sda ...
