Android开发 之 OpenGL ES系列(1--创建显示环境)
来源:互联网 发布:线切割编程要证明的 编辑:程序博客网 时间:2024/06/04 01:10
创建显示环境
在Andorid平台上构造一个OpenGL View非常简单,主要有两方面的工作:
GLSurfaceView
Android平台提供的OpenGL ES API主要定义在包android.opengl ,javax.microedition.khronos.egl ,javax.microedition.khronos.opengles ,java.nio 等几个包中,其中类GLSurfaceView 为这些包中的核心类:
起到连接OpenGL ES与Android 的View层次结构之间的桥梁作用。
使得Open GL ES库适应于Anndroid系统的Activity生命周期。
使得选择合适的Frame buffer像素格式变得容易。
创建和管理单独绘图线程以达到平滑动画效果。
GLSurfaceView
Android平台提供的OpenGL ES API主要定义在包android.opengl ,javax.microedition.khronos.egl ,javax.microedition.khronos.opengles ,java.nio 等几个包中,其中类GLSurfaceView 为这些包中的核心类:
起到连接OpenGL ES与Android 的View层次结构之间的桥梁作用。
使得Open GL ES库适应于Anndroid系统的Activity生命周期。
使得选择合适的Frame buffer像素格式变得容易。
创建和管理单独绘图线程以达到平滑动画效果。
创建一个 自定义的 GLSurfaceView
public class OpenGlActivity extends AppCompatActivity { private GLSurfaceView mGLView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Create a GLSurfaceView instance and set it // as the ContentView for this Activity. mGLView = new MyGLSurfaceView(this); mGLView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); setContentView(mGLView); }}
class MyGLSurfaceView extends GLSurfaceView { private final MyGLRenderer mRenderer; public MyGLSurfaceView(Context context){ super(context); // Create an OpenGL ES 2.0 context setEGLContextClientVersion(2); mRenderer = new MyGLRenderer(); // Set the Renderer for drawing on the GLSurfaceView setRenderer(mRenderer);//设置glview的监听。 }}
onDrawFrame: 定义实际的绘图操作。
onSurfaceChanged: 如果设备支持屏幕横向和纵向切换,这个方法将发生在横向<->纵向互换时。此时可以重新设置绘制的纵横比率。
public class MyGLRenderer implements GLSurfaceView.Renderer { //调用一次以建立视图的OpenGL ES的环境。 public void onSurfaceCreated(GL10 gl, EGLConfig config) { // Set the background frame color GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);// // Set the background color to black ( rgba ).// gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // OpenGL docs.// // Enable Smooth Shading, default not really needed.// gl.glShadeModel(GL10.GL_SMOOTH);// OpenGL docs.// // Depth buffer setup.// gl.glClearDepthf(1.0f);// OpenGL docs.// // Enables depth testing.// gl.glEnable(GL10.GL_DEPTH_TEST);// OpenGL docs.// // The type of depth testing to do.// gl.glDepthFunc(GL10.GL_LEQUAL);// OpenGL docs.// // Really nice perspective calculations.// gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,// GL10.GL_NICEST); } //被叫为视图的每个重绘。 public void onDrawFrame(GL10 unused) { // Redraw background color GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); } //如果认为变化的几何形状,例如,设备的屏幕取向的改变时 public void onSurfaceChanged(GL10 unused, int width, int height) { GLES20.glViewport(0, 0, width, height); }}
执行上面的代码后就会显示黑色全屏的GLSurfaceview。
阅读全文
0 0
- Android开发 之 OpenGL ES系列(1--创建显示环境)
- Android OpenGL ES2.0编程教程系列之创建OpenGL ES环境(一)
- Android开发 之 OpenGL ES系列(2--基本概念)
- Android开发 之 OpenGL ES系列(3--坐标系)
- Android开发 之 OpenGL ES系列(4--添加颜色)
- Android OpenGL ES 开发(二): OpenGL ES 环境搭建
- android studio | openGL es 3.0增强现实(AR)开发 (1) 建立一个openGL es 3.0开发环境
- Android开发 之 OpenGL ES系列(5--3D立体图形)
- Android Training - 使用OpenGL ES(1) - 构建OpenGL ES环境
- Android开发之OpenGL+ES教程
- Android开发之OpenGL+ES教程
- Android OpenGL ES 2.0之开发流程
- android OpenGL ES开发之前世今生
- android OpenGL ES开发之shader
- Android基础系列-----------OpenGL ES(一)
- OpenGL ES(1) - 构建OpenGL ES环境
- android opengl es入门系列
- Android OpenGL ES 开发教程(1):导言
- 未能加载文件或程序集“xxx”或它的某一个依赖项。试图加载格式不正确的程序。
- 关于new的讨论
- 数据结构封装之《GTree通用树》
- HDU5876Sparse Graph(补图最短路)
- WP手机短信导出方法和MSG格式文件阅读器的实现
- Android开发 之 OpenGL ES系列(1--创建显示环境)
- OSG的渲染树与状态树
- leetcode 48. Rotate Image 矩阵旋转
- Java多线程--happens-before
- python基础——模块
- 《OpenGL v1.1》——(1)接入Win32窗口,并描绘基本图元
- Java GC工作原理以及Minor GC、Major GC、Full GC简单总结
- 关于 !1、!0、!(-1) 的疑惑
- 动态视图