+++ /dev/null
-package org.jwz.xscreensaver;
-
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
-import net.rbgrn.android.glwallpaperservice.*;
-import android.opengl.GLU;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-
-// Original code provided by Robert Green
-// http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers
-public class ARenderer implements GLWallpaperService.Renderer {
-
- CallNative cn;
- boolean secondRun = false;
-
- // Used for Lighting
- //private static float[] ambientComponent0 = {0.3f, 0.3f, 1.0f, 1.0f};
- //private static float[] ambientComponent0 = {0.3f, 0.3f, 0.3f, 1.0f};
- private static float[] ambientComponent0 = {0.5f, 0.5f, 0.5f, 1.0f};
- private static float[] diffuseComponent0 = {1.0f, 1.0f, 1.0f, 1.0f};
- private static float[] lightPosition0 = {1f, 1f, -1f, 0f};
-
- public void onDrawFrame(GL10 gl) {
- if (!secondRun) {
- secondRun = true;
- return;
- }
- //gl.glClearColor(0.2f, 0.6f, 0.2f, 1f);
- gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
- }
-
- public void onSurfaceChanged(GL10 gl, int width, int height) {
-
- gl.glMatrixMode(GL10.GL_PROJECTION);
- gl.glLoadIdentity();
- GLU.gluPerspective(gl, 60f, (float)width/(float)height, 1f, 100f);
-
- gl.glMatrixMode(GL10.GL_MODELVIEW);
- gl.glLoadIdentity();
-
- gl.glMatrixMode(GL10.GL_MODELVIEW);
- gl.glTranslatef(0, 0, -5);
- gl.glRotatef(30f, 1, 0, 0);
-
- gl.glEnable(GL10.GL_LIGHTING);
- gl.glEnable(GL10.GL_RESCALE_NORMAL);
- gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);
-//Set the color of light bouncing off of surfaces to respect the surface color
- gl.glEnable(GL10.GL_COLOR_MATERIAL);
-
- setupLightSources(gl);
-
-// Turn on a global ambient light. The "Cosmic Background Radiation", if you will.
- //float[] ambientLightRGB = {0.3f, 0.3f, 0.3f, 1.0f};
- float[] ambientLightRGB = {0.5f, 0.5f, 0.5f, 1.0f};
- gl.glLightModelfv(GL10.GL_LIGHT_MODEL_AMBIENT, ambientLightRGB, 0);
- NonSurfaceChanged(width, height);
- }
-
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
-
- if (!secondRun) {
- return;
- }
- cn = new CallNative();
-
- gl.glClearDepthf(1f);
- gl.glEnable(GL10.GL_DEPTH_TEST);
- gl.glDepthFunc(GL10.GL_LEQUAL);
-
-//Turn on culling, so OpenGL only draws one side of the primitives
- gl.glEnable(GL10.GL_CULL_FACE);
-//Define the front of a primitive to be the side where the listed vertexes are counterclockwise
- gl.glFrontFace(GL10.GL_CCW);
-//Do not draw the backs of primitives
- gl.glCullFace(GL10.GL_BACK);
-
- }
-
- private void setupLightSources(GL10 gl) {
- if (!secondRun) {
- return;
- }
- //Enable Light source 0
- gl.glEnable(GL10.GL_LIGHT0);
-
- //Useful part of the Arrays start a 0
- gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, ambientComponent0, 0);
- gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, diffuseComponent0, 0);
-
- //Position the light in the scene
- gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPosition0, 0);
- }
-
- /**
- * Called when the engine is destroyed. Do any necessary clean up because
- * at this point your renderer instance is now done for.
- */
- public void release() {
- NonDone();
-
- }
-
- public void NonSurfaceCreated() {
- cn.nativeInit();
- }
-
- void NonSurfaceChanged(int w, int h) {
- if (!secondRun) {
- return;
- }
- cn.nativeResize(w, h);
- }
-
- void NonDrawFrame() {
- cn.nativeRender();
- }
-
- void NonDone() {
- cn.nativeDone();
- }
-
- static
- {
- System.loadLibrary ("xscreensaver");
- }
-
-}