am 056ade1b: Merge change 27203 into eclair
Merge commit '056ade1ba976eed5f9b3139ee96b9eb3a26f6283' into eclair-plus-aosp * commit '056ade1ba976eed5f9b3139ee96b9eb3a26f6283': Tighten up sample code.
This commit is contained in:
@@ -44,8 +44,6 @@ LOCAL_SHARED_LIBRARIES := \
|
|||||||
|
|
||||||
LOCAL_MODULE := libgl2jni
|
LOCAL_MODULE := libgl2jni
|
||||||
|
|
||||||
LOCAL_ARM_MODE := arm
|
|
||||||
|
|
||||||
LOCAL_PRELINK_MODULE := false
|
LOCAL_PRELINK_MODULE := false
|
||||||
|
|
||||||
include $(BUILD_SHARED_LIBRARY)
|
include $(BUILD_SHARED_LIBRARY)
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
#include <nativehelper/jni.h>
|
#include <nativehelper/jni.h>
|
||||||
#define LOG_TAG "GL2JNI gl_code.cpp"
|
#define LOG_TAG "GL2JNI gl_code.cpp"
|
||||||
#include <utils/Log.h>
|
#include <utils/Log.h>
|
||||||
|
|
||||||
#include <EGL/egl.h>
|
#include <EGL/egl.h>
|
||||||
#include <GLES2/gl2.h>
|
#include <GLES2/gl2.h>
|
||||||
#include <GLES2/gl2ext.h>
|
#include <GLES2/gl2ext.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ static void checkGlError(const char* op) {
|
|||||||
LOGI("after %s() glError (0x%x)\n", op, error);
|
LOGI("after %s() glError (0x%x)\n", op, error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char gVertexShader[] = "attribute vec4 vPosition;\n"
|
static const char gVertexShader[] = "attribute vec4 vPosition;\n"
|
||||||
"void main() {\n"
|
"void main() {\n"
|
||||||
" gl_Position = vPosition;\n"
|
" gl_Position = vPosition;\n"
|
||||||
@@ -151,15 +151,15 @@ void renderFrame() {
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init(JNIEnv * env, jobject obj, jint width, jint height);
|
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init(JNIEnv * env, jobject obj, jint width, jint height);
|
||||||
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step(JNIEnv * env, jobject obj);
|
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step(JNIEnv * env, jobject obj);
|
||||||
};
|
};
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init(JNIEnv * env, jobject obj, jint width, jint height)
|
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_init(JNIEnv * env, jobject obj, jint width, jint height)
|
||||||
{
|
{
|
||||||
setupGraphics(width, height);
|
setupGraphics(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step(JNIEnv * env, jobject obj)
|
JNIEXPORT void JNICALL Java_com_android_gl2jni_GL2JNILib_step(JNIEnv * env, jobject obj)
|
||||||
{
|
{
|
||||||
renderFrame();
|
renderFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import javax.microedition.khronos.egl.EGLConfig;
|
|||||||
import javax.microedition.khronos.egl.EGLContext;
|
import javax.microedition.khronos.egl.EGLContext;
|
||||||
import javax.microedition.khronos.egl.EGLDisplay;
|
import javax.microedition.khronos.egl.EGLDisplay;
|
||||||
import javax.microedition.khronos.opengles.GL10;
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An implementation of SurfaceView that uses the dedicated surface for
|
* An implementation of SurfaceView that uses the dedicated surface for
|
||||||
* displaying an OpenGL animation. This allows the animation to run in a
|
* displaying an OpenGL animation. This allows the animation to run in a
|
||||||
@@ -67,13 +68,14 @@ class GL2JNIView extends GLSurfaceView {
|
|||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
setEGLContextFactory(new ContextFactory());
|
setEGLContextFactory(new ContextFactory());
|
||||||
// setEGLConfigChooser(new ConfigChooser());
|
setEGLConfigChooser(new ConfigChooser());
|
||||||
setRenderer(new Renderer());
|
setRenderer(new Renderer());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ContextFactory implements GLSurfaceView.EGLContextFactory {
|
private static class ContextFactory implements GLSurfaceView.EGLContextFactory {
|
||||||
private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
|
private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
|
||||||
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
|
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
|
||||||
|
Log.w(TAG, "creating OpenGL ES 2.0 context");
|
||||||
checkEglError("Before eglCreateContext", egl);
|
checkEglError("Before eglCreateContext", egl);
|
||||||
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
|
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
|
||||||
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
|
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
|
||||||
@@ -83,7 +85,7 @@ class GL2JNIView extends GLSurfaceView {
|
|||||||
|
|
||||||
public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
|
public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
|
||||||
egl.eglDestroyContext(display, context);
|
egl.eglDestroyContext(display, context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void checkEglError(String prompt, EGL10 egl) {
|
private static void checkEglError(String prompt, EGL10 egl) {
|
||||||
@@ -95,11 +97,13 @@ class GL2JNIView extends GLSurfaceView {
|
|||||||
|
|
||||||
private static class ConfigChooser implements GLSurfaceView.EGLConfigChooser {
|
private static class ConfigChooser implements GLSurfaceView.EGLConfigChooser {
|
||||||
private static int EGL_OPENGL_ES2_BIT = 4;
|
private static int EGL_OPENGL_ES2_BIT = 4;
|
||||||
private static int[] s_configAttribs2 =
|
private static int[] s_configAttribs2 =
|
||||||
{
|
{
|
||||||
EGL10.EGL_DEPTH_SIZE, 16,
|
EGL10.EGL_RED_SIZE, 4,
|
||||||
// EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
EGL10.EGL_GREEN_SIZE, 4,
|
||||||
EGL10.EGL_NONE
|
EGL10.EGL_BLUE_SIZE, 4,
|
||||||
|
EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
||||||
|
EGL10.EGL_NONE
|
||||||
};
|
};
|
||||||
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
|
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
|
||||||
|
|
||||||
@@ -108,12 +112,13 @@ class GL2JNIView extends GLSurfaceView {
|
|||||||
|
|
||||||
int numConfigs = num_config[0];
|
int numConfigs = num_config[0];
|
||||||
|
|
||||||
|
Log.w(TAG, String.format("Found %d configurations", numConfigs));
|
||||||
if (numConfigs <= 0) {
|
if (numConfigs <= 0) {
|
||||||
throw new IllegalArgumentException("No configs match configSpec");
|
throw new IllegalArgumentException("No configs match configSpec");
|
||||||
}
|
}
|
||||||
EGLConfig[] configs = new EGLConfig[numConfigs];
|
EGLConfig[] configs = new EGLConfig[numConfigs];
|
||||||
egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);
|
egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);
|
||||||
return configs[0];
|
return configs[0s];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user