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 ...
随机推荐
- cs-HtmlHelpers
ylbtech-Unitity: cs-HtmlHelpers PagingHelpers.cs SelectInputHelpers.cs TreeHelpers.cs 1.A,效果图返回顶部 ...
- php之文件类型解析漏洞防御与攻击
php在处理文件上传时,经常可以用到下面几种方式来判断文件的类型 1.通过文件名后缀,不安全,非常容易欺骗2.通过mime判断,部分类型的文件通过修改文件后缀名,也可以欺骗服务器3.通过头字节判断文件 ...
- http://www.360doc.com/content/12/0516/14/1671317_211422841.shtml
http://www.360doc.com/content/12/0516/14/1671317_211422841.shtml
- LINUX 和WINDOWS下的自动登录小脚本
每天上班第一件事,就是连接公司LAB里面的机器,但首先要过一个防火墙,每次输用户名密码是很累人的事, 以下是两个脚本,可以放在启动项中,开机便自动登录 WINDOWS: @echo off ipcon ...
- LoadRunner测试AJAX
什么是AJAX? Ajax, shorthand for Asynchronous JavaScript and XML, is a web development technique for cre ...
- Java线程总结(转)
作者的blog:(http://blog.matrix.org.cn/page/Kaizen) 首先要理解线程首先须要了解一些主要的东西,我们如今所使用的大多数操作系统都属于多任务,分时操作系统.正是 ...
- Tabs or Spaces?
Never mix tabs and spaces. The most popular way of indenting Python is with spaces only. The second- ...
- hibernate 继承映射关系( SINGLE_TABLE)
三种继承映射关系. 1,SINGLE_TABLE person student teacher 在一个表中,student和teacher继承自person,通过一个Discriminato ...
- python 爬取王者荣耀高清壁纸
代码地址如下:http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...
- WP8控件进度条(ProgressBar)的使用
--前台代码 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="0,0,24,0"& ...