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. javascript快速入门18--样式

    修改元素外观方式 修改元素外观主要有下面3种方法:修改ID,修改className,修改元素的style属性 修改ID?会造成多么混乱的结果可想而知! 修改className确实是非常好的方法,我们甚 ...

  2. ACboy needs your help-分组背包模板题

    id=17676" target="_blank" style="color:blue; text-decoration:none">ACboy ...

  3. Hadoop Trash回收站使用指南

    转载:https://blog.csdn.net/sunnyyoona/article/details/78869778 我们在删除一个文件时,遇到如下问题,提示我们不能删除文件放回回收站: sudo ...

  4. 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 贝福IO模块介绍

    EL1002,EL1004,EL1008都是数字输入模块(2个点,4个点,8个点),输入高的范围是15V到30V,低的范围是-3V到5V         EL2002,EL2004,EL2008都是数 ...

  5. Windows正在使用无法停止通用卷怎么办

    最后解决方案1: 1.双击任务栏上的安全删除硬件图标 2.按下Ctrl + Alt + Del 组合键调出"任务管理器": 3.结束其中的explorer.exe进程,此时桌面上的 ...

  6. Java8 读写锁的改进:StampedLock(笔记)

         StampedLock是Java8引入的一种新的所机制,简单的理解,可以认为它是读写锁的一个改进版本,读写锁虽然分离了读和写的功能,使得读与读之间可以完全并发,但是读和写之间依然是冲突的,读 ...

  7. Python 类的特殊成员方法详解

    class doges(object): """类的描述信息""" def __init__(self,name,food): self.n ...

  8. 模板:什么是Traits

    Traits不是一种语法特性,而是一种模板编程技巧.Traits在C++标准库,尤其是STL中,有着不可替代的作用.   如何在编译期间区分类型   下面我们看一个实例,有四个类,Farm.Worke ...

  9. Django——如何处理请求(URL配置和视图)

    URLconfig—— 为了绑定视图函数和URL,我们使用URLconf. URLconf 就像是 Django 所支撑网站的目录. 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间 ...

  10. Android原生下拉刷新SwipeRefreshLayout实践

    本篇文章翻译自Ravi Tamada的Android Swipe Down to Refresh ListView Tutorial 首先来看一下效果图 你应该发现很多的android app比如Tw ...