diff options
Diffstat (limited to 'opengl')
| -rw-r--r-- | opengl/tests/lighting1709/Android.mk | 11 | ||||
| -rw-r--r-- | opengl/tests/lighting1709/AndroidManifest.xml | 13 | ||||
| -rw-r--r-- | opengl/tests/lighting1709/src/com/android/lightingtest/ClearActivity.java | 281 | 
3 files changed, 305 insertions, 0 deletions
| diff --git a/opengl/tests/lighting1709/Android.mk b/opengl/tests/lighting1709/Android.mk new file mode 100644 index 000000000000..9563e617f3aa --- /dev/null +++ b/opengl/tests/lighting1709/Android.mk @@ -0,0 +1,11 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := tests + +LOCAL_SRC_FILES := $(call all-subdir-java-files) + +LOCAL_PACKAGE_NAME := LightingTest +LOCAL_CERTIFICATE := platform + +include $(BUILD_PACKAGE) diff --git a/opengl/tests/lighting1709/AndroidManifest.xml b/opengl/tests/lighting1709/AndroidManifest.xml new file mode 100644 index 000000000000..6c23d422f5ec --- /dev/null +++ b/opengl/tests/lighting1709/AndroidManifest.xml @@ -0,0 +1,13 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" +        package="com.android.lightingtest"> + +    <application> +        <activity android:name="ClearActivity" android:label="LightingTest"> +            <intent-filter> +                <action android:name="android.intent.action.MAIN" /> +                <category android:name="android.intent.category.DEFAULT" /> +                <category android:name="android.intent.category.LAUNCHER" /> +            </intent-filter> +        </activity> +    </application> +</manifest> diff --git a/opengl/tests/lighting1709/src/com/android/lightingtest/ClearActivity.java b/opengl/tests/lighting1709/src/com/android/lightingtest/ClearActivity.java new file mode 100644 index 000000000000..3dc31cc617e2 --- /dev/null +++ b/opengl/tests/lighting1709/src/com/android/lightingtest/ClearActivity.java @@ -0,0 +1,281 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *      http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.lightingtest; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.FloatBuffer; + +import javax.microedition.khronos.egl.EGL10; +import javax.microedition.khronos.egl.EGLConfig; +import javax.microedition.khronos.opengles.GL10; + +import android.app.Activity; +import android.content.Context; +import android.opengl.GLSurfaceView; +import android.os.Bundle; +import android.util.Log; +import android.view.MotionEvent; + +public class ClearActivity extends Activity { +    @Override +    protected void onCreate(Bundle savedInstanceState) { +        instance = counter++; +        Log.e("ClearActivity", ":::::: onCreate: instance" + instance + " is created"); +        super.onCreate(savedInstanceState); +        mGLView = new ClearGLSurfaceView(this); +        setContentView(mGLView); +    } + +    @Override +    protected void onPause() { +        Log.e("ClearActivity", ":::::: instance" + instance + " onPause: is called"); +        super.onPause(); +        mGLView.onPause(); +    } + +    @Override +    protected void onResume() { +        Log.e("ClearActivity", ":::::: instance" + instance + " onResume: is called"); +        super.onResume(); +        mGLView.onResume(); +    } + +    @Override +    protected void onStop() { +        Log.e("ClearActivity", ":::::: instance" + instance + " onStop: is called"); +        super.onStop();         +    } + +    @Override +    protected void onDestroy() { +        Log.e("ClearActivity", ":::::: instance" + instance + " onDestroy: is called"); +        super.onDestroy();       +    } + +    private GLSurfaceView mGLView; + +    private static int counter = 0; +    private int        instance; +} + +class ClearGLSurfaceView extends GLSurfaceView { +    public ClearGLSurfaceView(Context context) { +        super(context); +        instance = counter++; +        Log.e("ClearGLSurfaceView", ":::::: instance" + instance + " is created"); +        mRenderer = new ClearRenderer(); +        setRenderer(mRenderer); +    } + +    public boolean onTouchEvent(final MotionEvent event) { +        switch (event.getAction()) { +            case MotionEvent.ACTION_DOWN: +            case MotionEvent.ACTION_MOVE: {// falling through on purpose here +                Log.e("ClearGLSurfaceView", ":::::: instance" + instance + " onTouchEvent: handling down or move action"); +                queueEvent(new Runnable(){ +                    public void run() { +                        mRenderer.setColor(event.getX() / getWidth(), +                                event.getY() / getHeight(), 1.0f); +                    }} +                ); +                return true; +            } +            case MotionEvent.ACTION_UP: { +                // launch a second instance of the same activity +                Log.e("ClearGLSurfaceView", ":::::: instance" + instance + " onTouchEvent: handling up action"); +                //                      Intent intent = new Intent(); +                //                      intent.setClass(getContext(), ClearActivity.class); +                //                      getContext().startActivity(intent); +            } + +        } +        return true; +    } + +    @Override +    protected void onDetachedFromWindow() { +        Log.e("ClearGLSurfaceView", ":::::: instance" + instance + " onDetachedFromWindow: is called"); +        super.onDetachedFromWindow();                   +    } + +    ClearRenderer mRenderer; + +    private static int counter = 0; +    private int instance; +} + +class ClearRenderer implements GLSurfaceView.Renderer { +    public ClearRenderer() { +        instance = counter++; +        Log.e("ClearRenderer", ":::::: instance" + instance + " is created");           +    } + +    public void onSurfaceCreated(GL10 gl, EGLConfig config) { +        // Do nothing special. +        Log.e("ClearRenderer", ":::::: instance" + instance + " onSurfaceCreated: is called");             +    } + +    public void onSurfaceChanged(GL10 gl, int w, int h) { +        Log.e("ClearRenderer", ":::::: instance" + instance + " onSurfaceChanged: is called");             + +        // Compute the projection matrix +        gl.glMatrixMode(GL10.GL_PROJECTION); +        gl.glLoadIdentity(); + +        // Compute the boundaries of the frustum +        float fl = (float) (-(w / 2)) / 288; +        float fr = (float) (w / 2) / 288; +        float ft = (float) (h / 2) / 288; +        float fb = (float) (-(h / 2)) / 288; + +        // Set the view frustum +        gl.glFrustumf(fl, fr, fb, ft, 1.0f, 2000.0f); + +        // Set the viewport dimensions +        gl.glMatrixMode(GL10.GL_MODELVIEW); +        gl.glLoadIdentity(); +        gl.glViewport(0, 0, w, h); +    } + +    public void onDrawFrame(GL10 gl) { +        //        gl.glClearColor(mRed, mGreen, mBlue, 1.0f); +        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); + +        float lightOff[]        = {0.0f, 0.0f, 0.0f, 1.0f}; +        float lightAmbient[]    = {5.0f, 0.0f, 0.0f, 1.0f}; +        float lightDiffuse[]    = {0.0f, 2.0f, 0.0f, 0.0f}; +        float lightPosAmbient[] = {0.0f, 0.0f, 0.0f, 1.0f}; +        float lightPosSpot[]    = {0.0f, 0.0f, -8.0f, 1.0f}; + +         +        float v[] = new float[9]; +        ByteBuffer vbb = ByteBuffer.allocateDirect(v.length*4); +        vbb.order(ByteOrder.nativeOrder()); +        FloatBuffer vb = vbb.asFloatBuffer(); + +        gl.glDisable(GL10.GL_DITHER); + +        gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_SPECULAR, lightOff, 0); +        gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, lightOff, 0); +        gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, lightAmbient, 0); +        gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPosAmbient, 0); +        gl.glEnable(GL10.GL_LIGHT0); + +        gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_SPECULAR, lightOff, 0); +        gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_DIFFUSE, lightDiffuse, 0); +        gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_AMBIENT, lightOff, 0); +        gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_POSITION, lightPosSpot, 0); +        gl.glLightf(GL10.GL_LIGHT1, GL10.GL_CONSTANT_ATTENUATION, 1.0f); +        gl.glLightf(GL10.GL_LIGHT1, GL10.GL_LINEAR_ATTENUATION, 0.0f); +        gl.glLightf(GL10.GL_LIGHT1, GL10.GL_QUADRATIC_ATTENUATION, 0.022f); +        gl.glEnable(GL10.GL_LIGHT1); + +        gl.glEnable(GL10.GL_LIGHTING); + +        // draw upper left triangle +        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); +        v[0] = -6f; v[1] = 0.5f; v[2] = -10f; +        v[3] = -5f; v[4] = 2.5f; v[5] = -10f; +        v[6] = -4f; v[7] = 0.5f; v[8] = -10f; +        vb.put(v).position(0); +        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vb); +        gl.glNormal3f(0, 0, 1); +        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); + +        // draw upper middle triangle +        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); +        v[0] = -1f; v[1] = 0.5f; v[2] = -10f; +        v[3] = 0f; v[4] = 2.5f; v[5] = -10f; +        v[6] = 1f; v[7] = 0.5f; v[8] = -10f; +        vb.put(v).position(0); +        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vb); +        gl.glNormal3f(0, 0, 1); +        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); + +        // draw upper right triangle +        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); +        v[0] = 4f; v[1] = 0.5f; v[2] = -10f; +        v[3] = 5f; v[4] = 2.5f; v[5] = -10f; +        v[6] = 6f; v[7] = 0.5f; v[8] = -10f; +        vb.put(v).position(0); +        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vb); +        gl.glNormal3f(0, 0, 1); +        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); + +        // draw lower left triangle +        gl.glPushMatrix(); +        gl.glTranslatef(-5.0f, -1.5f, 0.0f); +        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); +        v[0] = -1; v[1] = -1; v[2] = -10; +        v[3] = 0; v[4] = 1; v[5] = -10; +        v[6] = 1; v[7] = -1; v[8] = -10; +        vb.put(v).position(0); +        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vb); +        gl.glNormal3f(0, 0, 1); +        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); +        gl.glPopMatrix(); + +        // draw lower middle triangle +        gl.glPushMatrix(); +        gl.glTranslatef(0.0f, -1.5f, 0.0f); +        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); +        v[0] = -1; v[1] = -1; v[2] = -10; +        v[3] = 0; v[4] = 1; v[5] = -10; +        v[6] = 1; v[7] = -1; v[8] = -10; +        vb.put(v).position(0); +        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vb); +        gl.glNormal3f(0, 0, 1); +        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); +        gl.glPopMatrix(); + +        // draw lower right triangle +        gl.glPushMatrix(); +        gl.glTranslatef(5.0f, -1.5f, 0.0f); +        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); +        v[0] = -1; v[1] = -1; v[2] = -10; +        v[3] = 0; v[4] = 1; v[5] = -10; +        v[6] = 1; v[7] = -1; v[8] = -10; +        vb.put(v).position(0); +        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vb); +        gl.glNormal3f(0, 0, 1); +        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3); +        gl.glPopMatrix();       + +    } + +    public int[] getConfigSpec() { +        Log.e("ClearRenderer", ":::::: instance" + instance + " getConfigSpec: is called");               +        int[] configSpec = { EGL10.EGL_DEPTH_SIZE, 16, EGL10.EGL_NONE }; +        return configSpec;       +    } + +    public void setColor(float r, float g, float b) { +        Log.e("ClearRenderer", ":::::: instance" + instance + " setColor: is called");               +        mRed = r; +        mGreen = g; +        mBlue = b; +    } + +    private float mRed; +    private float mGreen; +    private float mBlue; + +    private static int counter = 0; +    private int instance; +} + |