OpenGL ES SDK for Android ARM Developer Center
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MetaballsView.java
Go to the documentation of this file.
1 /* Copyright (c) 2014-2017, ARM Limited and Contributors
2  *
3  * SPDX-License-Identifier: MIT
4  *
5  * Permission is hereby granted, free of charge,
6  * to any person obtaining a copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
9  * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14  * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19  */
20 
21 package com.arm.malideveloper.openglessdk.metaballs;
22 
23 import android.content.Context;
24 import android.opengl.GLSurfaceView;
25 import javax.microedition.khronos.egl.EGL10;
26 import javax.microedition.khronos.egl.EGLConfig;
27 import javax.microedition.khronos.egl.EGLContext;
28 import javax.microedition.khronos.egl.EGLDisplay;
29 import javax.microedition.khronos.opengles.GL10;
30 
31 class MetaballsView extends GLSurfaceView
32 {
33  protected int redSize = 5;
34  protected int greenSize = 6;
35  protected int blueSize = 5 ;
36  protected int alphaSize = 0;
37  protected int depthSize = 16;
38  protected int sampleSize = 4;
39  protected int stencilSize = 0;
40  protected int[] value = new int [1];
41 
42  public MetaballsView(Context context)
43  {
44  super(context);
45  setEGLContextFactory(new ContextFactory());
46  setEGLConfigChooser(new ConfigChooser());
47  setRenderer(new Renderer());
48  }
49 
50  private static class ContextFactory implements GLSurfaceView.EGLContextFactory
51  {
52  public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig)
53  {
54  final int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
55  int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION,
56  3,
57  EGL10.EGL_NONE };
58  EGLContext context = egl.eglCreateContext(display,
59  eglConfig,
60  EGL10.EGL_NO_CONTEXT,
61  attrib_list);
62 
63  return context;
64  }
65 
66  public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context)
67  {
68  NativeLibrary.uninit();
69  egl.eglDestroyContext(display, context);
70  }
71  }
72 
73  protected class ConfigChooser implements GLSurfaceView.EGLConfigChooser
74  {
75  public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display)
76  {
77  final int EGL_OPENGL_ES2_BIT = 4;
78  int[] configAttributes =
79  {
80  EGL10.EGL_RED_SIZE, redSize,
81  EGL10.EGL_GREEN_SIZE, greenSize,
82  EGL10.EGL_BLUE_SIZE, blueSize,
83  EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
84  EGL10.EGL_SAMPLES, sampleSize,
85  EGL10.EGL_DEPTH_SIZE, depthSize,
86  EGL10.EGL_STENCIL_SIZE, stencilSize,
87  EGL10.EGL_NONE
88  };
89 
90  int[] num_config = new int[1];
91  egl.eglChooseConfig(display, configAttributes, null, 0, num_config);
92 
93  int numConfigs = num_config[0];
94  EGLConfig[] configs = new EGLConfig[numConfigs];
95 
96  egl.eglChooseConfig(display, configAttributes, configs, numConfigs, num_config);
97  return configs[0];
98  }
99  }
100  private static class Renderer implements GLSurfaceView.Renderer
101  {
102  public void onDrawFrame(GL10 gl)
103  {
104  NativeLibrary.step();
105  }
106 
107  public void onSurfaceChanged(GL10 gl, int width, int height)
108  {
109  NativeLibrary.init(width, height);
110  }
111 
112  public void onSurfaceCreated(GL10 gl, EGLConfig config)
113  {
114  }
115  }
116 }
GLint GLsizei GLsizei height
Definition: gl2ext.h:179
GLint value
Definition: gl2ext.h:558
EGLint configAttributes[]
Definition: ThreadSync.h:160
EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig)
void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context)
GLint GLsizei width
Definition: gl2ext.h:179