• 检测设备支持版本,判断是否支持opengl 2.0版本
  • 初始化设置OpenGLES2.0
  • 实现接口GLSurfaceView.Renderer 渲染
  • 绘制图形

1、检测设备支持版本,判断是否支持opengl 2.0版本

private boolean hasGLES20(){
ActivityManager activityManager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
ConfigurationInfo info=activityManager.getDeviceConfigurationInfo();
return info.reqGLEsVersion>=0x20000;
}

2、强制应用支持

<uses-feature android:glEsVersion="0x00020000"
android:required="true"/>

3、初始化设置OpenGLES2.0

@Override
protected void onCreate(Bundle savedInstanceState){
//设置全屏模式
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
if(hasGLES20()){
GLSurfaceView mGLView=new GLSurfaceView(this);
mGLView.setEGLContextClientVersion(2);
//保留OpenGLESs上下文
mGLView.setPreserveEGLContextOnPause(true);
mGLView.setRenderer(new GLES20Renderer());
}
super.onCreate(savedInstanceState);
setContentView(mGLView);
} //要正常工作,OpenGL 的生命周期要跟Activity 对应上
@Override
protected void onResume() {
super.onResume();
if (mGLView!=null){
mGLView.onResume();
}
} @Override
protected void onPause() {
super.onPause();
if (mGLView!=null){
mGLView.onPause();
}
}

4、GLSurfaceView.Renderer 渲染器,实现接口GLSurfaceView.Renderer 渲染

public abstract class GLRenderer implements GLSurfaceView.Renderer{

private boolean mFirstDraw;
private boolean mSurfaceCreated;
private int mWidth;
private int mHeight;
private long mLastTime;
private int mFPS; @Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
mSurfaceCreated=true;
mWidth=-1;
mHeight=-1;
} @Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
if (!mSurfaceCreated&&width==mWidth&&height==mHeight){
return;
}
mWidth=width;
mHeight=height;
onCreate(mWidth,mHeight,mSurfaceCreated);
mSurfaceCreated=false;
} @Override
public void onDrawFrame(GL10 gl) {
onDrawFrame(mFirstDraw);
if (mFirstDraw){
mFirstDraw=false;
}
}
public abstract void onCreate(int width,int height,boolean contextLost);
public abstract void onDrawFrame(boolean firstDraw);
public int getFPS(){
return mFPS;
} }

5、绘制图形

public class GLES20Renderer extends GLRenderer {

    @Override
public void onCreate(int width, int height,
boolean contextLost) {
GLES20.glClearColor(0f, 0f, 0f, 1f);
} @Override
public void onDrawFrame(boolean firstDraw) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT
| GLES20.GL_DEPTH_BUFFER_BIT);
}
}

OPENGL 入门的更多相关文章

  1. MFC下OpenGL入门(可以用)

    MFC下OpenGL入门 源文件 1, 建一工程文件,我这里命名为first,现在first工程里面我们没有添加任何东西,所有的东西都是MFC自动帮我们创建的. 2, 添加链接库.这一步很关键.打开菜 ...

  2. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  3. OpenGL入门学习(转)

    OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...

  4. [转]opengl入门例题(读取bmp图片,并显示)

    #include<gl/glut.h> #define FileName "bliss.bmp" static GLint imagewidth; static GLi ...

  5. OpenGL入门学习(转载)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  6. SCARA——OpenGL入门学习五六(三维变换、动画)

    OpenGL入门学习(五) 此课为三维变换的内容,比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果, 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从-1到1,还只能 ...

  7. SCARA——OpenGL入门学习四(颜色)

    OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...

  8. SCARA——OpenGL入门学习三

    OpenGL入门学习[三] 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点太小,难以看清楚:直线也太细,不舒服:或者想画虚线,但不知道方法只能用 ...

  9. OpenGL入门学习(三)

    http://developer.178.com/201103/94954704639.html 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点 ...

  10. OpenGL入门1.4:纹理/贴图Texture

    每一个小步骤的源码都放在了Github 的内容为插入注释,可以先跳过 前言 游戏玩家对Texture这个词应该不陌生,我们已经知道了怎么为每个顶点添加颜色来增加图形的细节,但,如果想让图形看起来更真实 ...

随机推荐

  1. 开源WAF工具ModSecurity

    0 前言 ModSecurity是一个开源的跨平台Web应用程序防火墙(WAF)引擎,用于Apache,IIS和Nginx,由Trustwave的SpiderLabs开发.作为WAF产品,ModSec ...

  2. cesium计算当前地图范围extent以及近似当前层级zoom

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  3. Autofac 泛型依赖注入

    using Autofac;using Autofac.Extensions.DependencyInjection;using Hangfire;using Microsoft.AspNetCore ...

  4. H5 video poster属性—设置视频封面

     打开一个视频,在点击播放之前会看到一张封面图,点击之后封面消失,随即播放视频.   若现有一需求,要你自定义给某个视频设置封面,应该怎么做呢?   此时可使用H5 video提供的poster属性即 ...

  5. Centos系统镜像安装

    一.下载Centos版本 官网地址:http://isoredirect.centos.org/centos 二.制作U盘启动镜像 1.下载安装win32diskimager,用于制作U盘启动镜像,点 ...

  6. .Net Core 项目发布到Linux - CentOS 7(一)

    由于项目的需求,需要发布到Linux服务器上,在这里记录一下我发布的过程. 安装Linux 安装liunx系统很简单,网上也有很多教程,我是直接使用阿里云的CentOS 7.7 64位 部署环境 Li ...

  7. ESPCMS P8 stable version Front-end reflective xss

    Download the source code first In the directory espcms_web\espcms_load.php line 67 if (!is_file($mod ...

  8. c#串口通信并处理接收的多个参数

    最近摸索做个上位机,简单记录一下关键的几个部分 c#做串口通信主要使用的是System.IO.Ports类,其实还是十分方便的 最终效果如下: 千万不要忘记了下面这个 填写串口相关配置 我们可以通过G ...

  9. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  10. SQL Server事务复制(sql 2008 r2)

    一.环境准备 1.两个虚拟服务器 主机1:XINXIBU01  作为发布和分发服务器   主 机2:XINXIBU02 192.168.1.160  作业阅服务器 2.SQL SERVER sql 2 ...