Created
October 12, 2011 14:41
-
-
Save holderbaum/1281394 to your computer and use it in GitHub Desktop.
Android OpenGL Application
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.android.apps; | |
import com.example.android.apis.R; | |
import android.app.Activity; | |
import android.os.Bundle; | |
import android.opengl.GLSurfaceView; | |
import android.view.Window; | |
import android.view.WindowManager; | |
public class FlySimClientActivity extends Activity { | |
private GLSurfaceView glView; // Use GLSurfaceView | |
// Call back when the activity is started, to initialize the view | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
this.requestWindowFeature(Window.FEATURE_NO_TITLE); | |
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); | |
glView = new GLSurfaceView(this); // Allocate a GLSurfaceView | |
glView.setRenderer(new FlySimRenderer(this)); // Use a custom renderer | |
this.setContentView(glView); // This activity sets to GLSurfaceView | |
} | |
// Call back when the activity is going into the background | |
@Override | |
protected void onPause() { | |
super.onPause(); | |
glView.onPause(); | |
} | |
// Call back after onPause() | |
@Override | |
protected void onResume() { | |
super.onResume(); | |
glView.onResume(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.android.apps; | |
import javax.microedition.khronos.egl.EGLConfig; | |
import javax.microedition.khronos.opengles.GL10; | |
import android.content.Context; | |
import android.opengl.GLU; | |
import android.opengl.GLSurfaceView.Renderer; | |
import android.util.Log; | |
public class FlySimRenderer implements Renderer { | |
Context context; // Application's context | |
// Constructor with global application context | |
public FlySimRenderer(Context context) { | |
this.context = context; | |
} | |
// Call back when the surface is first created or re-created | |
@Override | |
public void onSurfaceCreated(GL10 gl, EGLConfig config) { | |
gl.glClearColor(0.0f, 255.0f, 0.0f, 1.0f); // Set color's clear-value to black | |
gl.glClearDepthf(1.0f); // Set depth's clear-value to farthest | |
gl.glEnable(GL10.GL_DEPTH_TEST); // Enables depth-buffer for hidden surface removal | |
gl.glDepthFunc(GL10.GL_LEQUAL); // The type of depth testing to do | |
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); // nice perspective view | |
gl.glShadeModel(GL10.GL_SMOOTH); // Enable smooth shading of color | |
gl.glDisable(GL10.GL_DITHER); // Disable dithering for better performance | |
// You OpenGL|ES initialization code here | |
// ...... | |
} | |
// Call back after onSurfaceCreated() or whenever the window's size changes | |
@Override | |
public void onSurfaceChanged(GL10 gl, int width, int height) { | |
if (height == 0) height = 1; // To prevent divide by zero | |
float aspect = (float)width / height; | |
// Set the viewport (display area) to cover the entire window | |
Log.w("DIM", "width: " + width + "; height: " + height); | |
gl.glViewport(0, 0, width, height); | |
// Setup perspective projection, with aspect ratio matches viewport | |
gl.glMatrixMode(GL10.GL_PROJECTION); // Select projection matrix | |
gl.glLoadIdentity(); // Reset projection matrix | |
// Use perspective projection | |
GLU.gluPerspective(gl, 45, aspect, 0.1f, 100.f); | |
gl.glMatrixMode(GL10.GL_MODELVIEW); // Select model-view matrix | |
gl.glLoadIdentity(); // Reset | |
// You OpenGL|ES display re-sizing code here | |
// ...... | |
} | |
// Call back to draw the current frame. | |
@Override | |
public void onDrawFrame(GL10 gl) { | |
// Clear color and depth buffers using clear-value set earlier | |
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); | |
// You OpenGL|ES rendering code here | |
// ...... | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment