1919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich/* 2919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * Copyright (C) 2009 The Android Open Source Project 3919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * 4919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License"); 5919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * you may not use this file except in compliance with the License. 6919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * You may obtain a copy of the License at 7919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * 8919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * http://www.apache.org/licenses/LICENSE-2.0 9919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * 10919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * Unless required by applicable law or agreed to in writing, software 11919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS, 12919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * See the License for the specific language governing permissions and 14919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * limitations under the License. 15919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich */ 16919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 17919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichpackage com.android.gljni; 18919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich/* 19919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * Copyright (C) 2008 The Android Open Source Project 20919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * 21919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License"); 22919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * you may not use this file except in compliance with the License. 23919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * You may obtain a copy of the License at 24919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * 25919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * http://www.apache.org/licenses/LICENSE-2.0 26919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * 27919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * Unless required by applicable law or agreed to in writing, software 28919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS, 29919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 30919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * See the License for the specific language governing permissions and 31919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * limitations under the License. 32919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich */ 33919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 34919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 35919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport android.content.Context; 36919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport android.opengl.GLSurfaceView; 37919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport android.util.AttributeSet; 38919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport android.util.Log; 39919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport android.view.KeyEvent; 40919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport android.view.MotionEvent; 41919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 42919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport javax.microedition.khronos.egl.EGL10; 43919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport javax.microedition.khronos.egl.EGLConfig; 44919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichimport javax.microedition.khronos.opengles.GL10; 45919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich/** 46919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * An implementation of SurfaceView that uses the dedicated surface for 47919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * displaying an OpenGL animation. This allows the animation to run in a 48919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * separate thread, without requiring that it be driven by the update mechanism 49919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * of the view hierarchy. 50919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * 51919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * The application-specific rendering code is delegated to a GLView.Renderer 52919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich * instance. 53919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich */ 54919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevichclass GLJNIView extends GLSurfaceView { 55919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich GLJNIView(Context context) { 56919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich super(context); 57919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich init(); 58919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich } 59919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 60919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich public GLJNIView(Context context, AttributeSet attrs) { 61919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich super(context, attrs); 62919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich init(); 63919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich } 64919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 65919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich private void init() { 66919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich setRenderer(new Renderer()); 67919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich } 68919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 69919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich private class Renderer implements GLSurfaceView.Renderer { 70919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich private static final String TAG = "Renderer"; 71919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich public void onDrawFrame(GL10 gl) { 72919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich GLJNILib.step(); 73919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich } 74919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 75919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich public void onSurfaceChanged(GL10 gl, int width, int height) { 76919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich GLJNILib.init(width, height); 77919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich } 78919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 79919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich public void onSurfaceCreated(GL10 gl, EGLConfig config) { 80919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich // Do nothing. 81919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich } 82919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich } 83e5810d1f98557cbcf0f533215b1d76724b182e79Jack Palevich 84e5810d1f98557cbcf0f533215b1d76724b182e79Jack Palevich @Override 85e5810d1f98557cbcf0f533215b1d76724b182e79Jack Palevich public boolean onKeyDown(int keyCode, KeyEvent event) { 86e5810d1f98557cbcf0f533215b1d76724b182e79Jack Palevich GLJNILib.changeBackground(); 87e5810d1f98557cbcf0f533215b1d76724b182e79Jack Palevich return true; 88e5810d1f98557cbcf0f533215b1d76724b182e79Jack Palevich } 89919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich} 90919583553781f1e1885fa17f76d54008ebeca3c1Jack Palevich 91