Add a Java API for OpenGL ES 2.0.
Currently this API is hidden. Add a test program.
This commit is contained in:
parent
d807a1053e
commit
50d0b14689
18
opengl/tests/gl2_java/Android.mk
Normal file
18
opengl/tests/gl2_java/Android.mk
Normal file
@ -0,0 +1,18 @@
|
||||
#########################################################################
|
||||
# OpenGL ES 2.0 Java sample
|
||||
#########################################################################
|
||||
|
||||
TOP_LOCAL_PATH:= $(call my-dir)
|
||||
|
||||
# Build activity
|
||||
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
LOCAL_SRC_FILES := $(call all-subdir-java-files)
|
||||
|
||||
LOCAL_PACKAGE_NAME := GL2Java
|
||||
|
||||
include $(BUILD_PACKAGE)
|
35
opengl/tests/gl2_java/AndroidManifest.xml
Normal file
35
opengl/tests/gl2_java/AndroidManifest.xml
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
**
|
||||
** Copyright 2009, 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.
|
||||
*/
|
||||
-->
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.gl2java">
|
||||
<application
|
||||
android:label="@string/gl2java_activity">
|
||||
<activity android:name="GL2JavaActivity"
|
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
|
||||
android:launchMode="singleTask"
|
||||
android:configChanges="orientation|keyboardHidden">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
29
opengl/tests/gl2_java/res/values/strings.xml
Normal file
29
opengl/tests/gl2_java/res/values/strings.xml
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
/*
|
||||
**
|
||||
** Copyright 2006, 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.
|
||||
*/
|
||||
-->
|
||||
|
||||
<!-- This file contains resource definitions for displayed strings, allowing
|
||||
them to be changed based on the locale and options. -->
|
||||
|
||||
<resources>
|
||||
<!-- Simple strings. -->
|
||||
<string name="gl2java_activity">GL2Java</string>
|
||||
|
||||
</resources>
|
||||
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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.gl2java;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
||||
public class GL2JavaActivity extends Activity {
|
||||
|
||||
GL2JavaView mView;
|
||||
|
||||
@Override protected void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
mView = new GL2JavaView(getApplication());
|
||||
setContentView(mView);
|
||||
}
|
||||
|
||||
@Override protected void onPause() {
|
||||
super.onPause();
|
||||
mView.onPause();
|
||||
}
|
||||
|
||||
@Override protected void onResume() {
|
||||
super.onResume();
|
||||
mView.onResume();
|
||||
}
|
||||
}
|
386
opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaView.java
Normal file
386
opengl/tests/gl2_java/src/com/android/gl2java/GL2JavaView.java
Normal file
@ -0,0 +1,386 @@
|
||||
/*
|
||||
* Copyright (C) 2009 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.gl2java;
|
||||
|
||||
import android.content.Context;
|
||||
import android.opengl.GLSurfaceView;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
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.egl.EGLContext;
|
||||
import javax.microedition.khronos.egl.EGLDisplay;
|
||||
import javax.microedition.khronos.opengles.GL10;
|
||||
|
||||
import android.opengl.GLES20;
|
||||
|
||||
/**
|
||||
* An implementation of SurfaceView that uses the dedicated surface for
|
||||
* displaying an OpenGL animation. This allows the animation to run in a
|
||||
* separate thread, without requiring that it be driven by the update mechanism
|
||||
* of the view hierarchy.
|
||||
*
|
||||
* The application-specific rendering code is delegated to a GLView.Renderer
|
||||
* instance.
|
||||
*/
|
||||
class GL2JavaView extends GLSurfaceView {
|
||||
private static String TAG = "GL2JavaView";
|
||||
|
||||
public GL2JavaView(Context context) {
|
||||
super(context);
|
||||
init(false, 0, 0);
|
||||
}
|
||||
|
||||
public GL2JavaView(Context context, boolean translucent, int depth, int stencil) {
|
||||
super(context);
|
||||
init(translucent, depth, stencil);
|
||||
}
|
||||
|
||||
private void init(boolean translucent, int depth, int stencil) {
|
||||
setEGLContextFactory(new ContextFactory());
|
||||
setEGLConfigChooser( translucent ?
|
||||
new ConfigChooser(8,8,8,8, depth, stencil) :
|
||||
new ConfigChooser(5,6,5,0, depth, stencil));
|
||||
setRenderer(new Renderer());
|
||||
}
|
||||
|
||||
private static class ContextFactory implements GLSurfaceView.EGLContextFactory {
|
||||
private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
|
||||
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
|
||||
Log.w(TAG, "creating OpenGL ES 2.0 context");
|
||||
checkEglError("Before eglCreateContext", egl);
|
||||
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
|
||||
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
|
||||
checkEglError("After eglCreateContext", egl);
|
||||
return context;
|
||||
}
|
||||
|
||||
public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
|
||||
egl.eglDestroyContext(display, context);
|
||||
}
|
||||
}
|
||||
|
||||
private static void checkEglError(String prompt, EGL10 egl) {
|
||||
int error;
|
||||
while ((error = egl.eglGetError()) != EGL10.EGL_SUCCESS) {
|
||||
Log.e(TAG, String.format("%s: EGL error: 0x%x", prompt, error));
|
||||
}
|
||||
}
|
||||
|
||||
private static class ConfigChooser implements GLSurfaceView.EGLConfigChooser {
|
||||
private static int EGL_OPENGL_ES2_BIT = 4;
|
||||
private static int[] s_configAttribs2 =
|
||||
{
|
||||
EGL10.EGL_RED_SIZE, 4,
|
||||
EGL10.EGL_GREEN_SIZE, 4,
|
||||
EGL10.EGL_BLUE_SIZE, 4,
|
||||
EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
||||
EGL10.EGL_NONE
|
||||
};
|
||||
|
||||
public ConfigChooser(int r, int g, int b, int a, int depth, int stencil) {
|
||||
mRedSize = r;
|
||||
mGreenSize = g;
|
||||
mBlueSize = b;
|
||||
mAlphaSize = a;
|
||||
mDepthSize = depth;
|
||||
mStencilSize = stencil;
|
||||
}
|
||||
|
||||
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
|
||||
|
||||
int[] num_config = new int[1];
|
||||
egl.eglChooseConfig(display, s_configAttribs2, null, 0, num_config);
|
||||
|
||||
int numConfigs = num_config[0];
|
||||
|
||||
if (numConfigs <= 0) {
|
||||
throw new IllegalArgumentException("No configs match configSpec");
|
||||
}
|
||||
EGLConfig[] configs = new EGLConfig[numConfigs];
|
||||
egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);
|
||||
// printConfigs(egl, display, configs);
|
||||
return chooseConfig(egl, display, configs);
|
||||
}
|
||||
|
||||
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display,
|
||||
EGLConfig[] configs) {
|
||||
EGLConfig closestConfig = null;
|
||||
int closestDistance = 1000;
|
||||
for(EGLConfig config : configs) {
|
||||
int d = findConfigAttrib(egl, display, config,
|
||||
EGL10.EGL_DEPTH_SIZE, 0);
|
||||
int s = findConfigAttrib(egl, display, config,
|
||||
EGL10.EGL_STENCIL_SIZE, 0);
|
||||
if (d >= mDepthSize && s>= mStencilSize) {
|
||||
int r = findConfigAttrib(egl, display, config,
|
||||
EGL10.EGL_RED_SIZE, 0);
|
||||
int g = findConfigAttrib(egl, display, config,
|
||||
EGL10.EGL_GREEN_SIZE, 0);
|
||||
int b = findConfigAttrib(egl, display, config,
|
||||
EGL10.EGL_BLUE_SIZE, 0);
|
||||
int a = findConfigAttrib(egl, display, config,
|
||||
EGL10.EGL_ALPHA_SIZE, 0);
|
||||
int distance = Math.abs(r - mRedSize)
|
||||
+ Math.abs(g - mGreenSize)
|
||||
+ Math.abs(b - mBlueSize)
|
||||
+ Math.abs(a - mAlphaSize);
|
||||
if (distance < closestDistance) {
|
||||
closestDistance = distance;
|
||||
closestConfig = config;
|
||||
}
|
||||
}
|
||||
}
|
||||
return closestConfig;
|
||||
}
|
||||
|
||||
private int findConfigAttrib(EGL10 egl, EGLDisplay display,
|
||||
EGLConfig config, int attribute, int defaultValue) {
|
||||
|
||||
if (egl.eglGetConfigAttrib(display, config, attribute, mValue)) {
|
||||
return mValue[0];
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
private void printConfigs(EGL10 egl, EGLDisplay display,
|
||||
EGLConfig[] configs) {
|
||||
int numConfigs = configs.length;
|
||||
Log.w(TAG, String.format("%d configurations", numConfigs));
|
||||
for (int i = 0; i < numConfigs; i++) {
|
||||
Log.w(TAG, String.format("Configuration %d:\n", i));
|
||||
printConfig(egl, display, configs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private void printConfig(EGL10 egl, EGLDisplay display,
|
||||
EGLConfig config) {
|
||||
int[] attributes = {
|
||||
EGL10.EGL_BUFFER_SIZE,
|
||||
EGL10.EGL_ALPHA_SIZE,
|
||||
EGL10.EGL_BLUE_SIZE,
|
||||
EGL10.EGL_GREEN_SIZE,
|
||||
EGL10.EGL_RED_SIZE,
|
||||
EGL10.EGL_DEPTH_SIZE,
|
||||
EGL10.EGL_STENCIL_SIZE,
|
||||
EGL10.EGL_CONFIG_CAVEAT,
|
||||
EGL10.EGL_CONFIG_ID,
|
||||
EGL10.EGL_LEVEL,
|
||||
EGL10.EGL_MAX_PBUFFER_HEIGHT,
|
||||
EGL10.EGL_MAX_PBUFFER_PIXELS,
|
||||
EGL10.EGL_MAX_PBUFFER_WIDTH,
|
||||
EGL10.EGL_NATIVE_RENDERABLE,
|
||||
EGL10.EGL_NATIVE_VISUAL_ID,
|
||||
EGL10.EGL_NATIVE_VISUAL_TYPE,
|
||||
0x3030, // EGL10.EGL_PRESERVED_RESOURCES,
|
||||
EGL10.EGL_SAMPLES,
|
||||
EGL10.EGL_SAMPLE_BUFFERS,
|
||||
EGL10.EGL_SURFACE_TYPE,
|
||||
EGL10.EGL_TRANSPARENT_TYPE,
|
||||
EGL10.EGL_TRANSPARENT_RED_VALUE,
|
||||
EGL10.EGL_TRANSPARENT_GREEN_VALUE,
|
||||
EGL10.EGL_TRANSPARENT_BLUE_VALUE,
|
||||
0x3039, // EGL10.EGL_BIND_TO_TEXTURE_RGB,
|
||||
0x303A, // EGL10.EGL_BIND_TO_TEXTURE_RGBA,
|
||||
0x303B, // EGL10.EGL_MIN_SWAP_INTERVAL,
|
||||
0x303C, // EGL10.EGL_MAX_SWAP_INTERVAL,
|
||||
EGL10.EGL_LUMINANCE_SIZE,
|
||||
EGL10.EGL_ALPHA_MASK_SIZE,
|
||||
EGL10.EGL_COLOR_BUFFER_TYPE,
|
||||
EGL10.EGL_RENDERABLE_TYPE,
|
||||
0x3042 // EGL10.EGL_CONFORMANT
|
||||
};
|
||||
String[] names = {
|
||||
"EGL_BUFFER_SIZE",
|
||||
"EGL_ALPHA_SIZE",
|
||||
"EGL_BLUE_SIZE",
|
||||
"EGL_GREEN_SIZE",
|
||||
"EGL_RED_SIZE",
|
||||
"EGL_DEPTH_SIZE",
|
||||
"EGL_STENCIL_SIZE",
|
||||
"EGL_CONFIG_CAVEAT",
|
||||
"EGL_CONFIG_ID",
|
||||
"EGL_LEVEL",
|
||||
"EGL_MAX_PBUFFER_HEIGHT",
|
||||
"EGL_MAX_PBUFFER_PIXELS",
|
||||
"EGL_MAX_PBUFFER_WIDTH",
|
||||
"EGL_NATIVE_RENDERABLE",
|
||||
"EGL_NATIVE_VISUAL_ID",
|
||||
"EGL_NATIVE_VISUAL_TYPE",
|
||||
"EGL_PRESERVED_RESOURCES",
|
||||
"EGL_SAMPLES",
|
||||
"EGL_SAMPLE_BUFFERS",
|
||||
"EGL_SURFACE_TYPE",
|
||||
"EGL_TRANSPARENT_TYPE",
|
||||
"EGL_TRANSPARENT_RED_VALUE",
|
||||
"EGL_TRANSPARENT_GREEN_VALUE",
|
||||
"EGL_TRANSPARENT_BLUE_VALUE",
|
||||
"EGL_BIND_TO_TEXTURE_RGB",
|
||||
"EGL_BIND_TO_TEXTURE_RGBA",
|
||||
"EGL_MIN_SWAP_INTERVAL",
|
||||
"EGL_MAX_SWAP_INTERVAL",
|
||||
"EGL_LUMINANCE_SIZE",
|
||||
"EGL_ALPHA_MASK_SIZE",
|
||||
"EGL_COLOR_BUFFER_TYPE",
|
||||
"EGL_RENDERABLE_TYPE",
|
||||
"EGL_CONFORMANT"
|
||||
};
|
||||
int[] value = new int[1];
|
||||
for (int i = 0; i < attributes.length; i++) {
|
||||
int attribute = attributes[i];
|
||||
String name = names[i];
|
||||
if ( egl.eglGetConfigAttrib(display, config, attribute, value)) {
|
||||
Log.w(TAG, String.format(" %s: %d\n", name, value[0]));
|
||||
} else {
|
||||
// Log.w(TAG, String.format(" %s: failed\n", name));
|
||||
while (egl.eglGetError() != EGL10.EGL_SUCCESS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Subclasses can adjust these values:
|
||||
protected int mRedSize;
|
||||
protected int mGreenSize;
|
||||
protected int mBlueSize;
|
||||
protected int mAlphaSize;
|
||||
protected int mDepthSize;
|
||||
protected int mStencilSize;
|
||||
private int[] mValue = new int[1];
|
||||
}
|
||||
|
||||
private static class Renderer implements GLSurfaceView.Renderer {
|
||||
|
||||
public Renderer() {
|
||||
mTriangleVertices = ByteBuffer.allocateDirect(mTriangleVerticesData.length * 4)
|
||||
.order(ByteOrder.nativeOrder()).asFloatBuffer();
|
||||
mTriangleVertices.put(mTriangleVerticesData).position(0);
|
||||
}
|
||||
|
||||
public void onDrawFrame(GL10 gl) {
|
||||
GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
|
||||
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
|
||||
GLES20.glUseProgram(mProgram);
|
||||
checkGlError("glUseProgram");
|
||||
|
||||
GLES20.glVertexAttribPointer(mvPositionHandle, 2, GLES20.GL_FLOAT, false, 0, mTriangleVertices);
|
||||
checkGlError("glVertexAttribPointer");
|
||||
GLES20.glEnableVertexAttribArray(mvPositionHandle);
|
||||
checkGlError("glEnableVertexAttribArray");
|
||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
|
||||
checkGlError("glDrawArrays");
|
||||
|
||||
}
|
||||
|
||||
public void onSurfaceChanged(GL10 gl, int width, int height) {
|
||||
GLES20.glViewport(0, 0, width, height);
|
||||
}
|
||||
|
||||
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
||||
mProgram = createProgram(mVertexShader, mFragmentShader);
|
||||
if (mProgram == 0) {
|
||||
return;
|
||||
}
|
||||
mvPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");
|
||||
checkGlError("glGetAttribLocation");
|
||||
if (mvPositionHandle == -1) {
|
||||
throw new RuntimeException("Could not get attrib location for vPosition");
|
||||
}
|
||||
}
|
||||
|
||||
private int loadShader(int shaderType, String source) {
|
||||
int shader = GLES20.glCreateShader(shaderType);
|
||||
if (shader != 0) {
|
||||
GLES20.glShaderSource(shader, source);
|
||||
GLES20.glCompileShader(shader);
|
||||
int[] compiled = new int[1];
|
||||
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
|
||||
if (compiled[0] == 0) {
|
||||
Log.e(TAG, "Could not compile shader " + shaderType + ":");
|
||||
Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
|
||||
GLES20.glDeleteShader(shader);
|
||||
shader = 0;
|
||||
}
|
||||
}
|
||||
return shader;
|
||||
}
|
||||
|
||||
private int createProgram(String vertexSource, String fragmentSource) {
|
||||
int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
|
||||
if (vertexShader == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
|
||||
if (pixelShader == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int program = GLES20.glCreateProgram();
|
||||
if (program != 0) {
|
||||
GLES20.glAttachShader(program, vertexShader);
|
||||
checkGlError("glAttachShader");
|
||||
GLES20.glAttachShader(program, pixelShader);
|
||||
checkGlError("glAttachShader");
|
||||
GLES20.glLinkProgram(program);
|
||||
int[] linkStatus = new int[1];
|
||||
GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
|
||||
if (linkStatus[0] != GLES20.GL_TRUE) {
|
||||
Log.e(TAG, "Could not link program: ");
|
||||
Log.e(TAG, GLES20.glGetProgramInfoLog(program));
|
||||
GLES20.glDeleteProgram(program);
|
||||
program = 0;
|
||||
}
|
||||
}
|
||||
return program;
|
||||
}
|
||||
|
||||
private void checkGlError(String op) {
|
||||
int error;
|
||||
while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
|
||||
Log.e(TAG, op + ": glError " + error);
|
||||
throw new RuntimeException(op + ": glError " + error);
|
||||
}
|
||||
}
|
||||
|
||||
private final float[] mTriangleVerticesData = { 0.0f, 0.5f, -0.5f, -0.5f,
|
||||
0.5f, -0.5f };
|
||||
|
||||
private FloatBuffer mTriangleVertices;
|
||||
|
||||
private final String mVertexShader = "attribute vec4 vPosition;\n"
|
||||
+ "void main() {\n"
|
||||
+ " gl_Position = vPosition;\n"
|
||||
+ "}\n";
|
||||
|
||||
private final String mFragmentShader = "precision mediump float;\n"
|
||||
+ "void main() {\n"
|
||||
+ " gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);\n"
|
||||
+ "}\n";
|
||||
|
||||
private int mProgram;
|
||||
private int mvPositionHandle;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ rm src/*.class
|
||||
|
||||
pushd out > /dev/null
|
||||
mkdir classes
|
||||
javac -d classes com/google/android/gles_jni/GLImpl.java javax/microedition/khronos/opengles/GL10.java javax/microedition/khronos/opengles/GL10Ext.java javax/microedition/khronos/opengles/GL11.java javax/microedition/khronos/opengles/GL11Ext.java javax/microedition/khronos/opengles/GL11ExtensionPack.java android/opengl/GLES10.java android/opengl/GLES10Ext.java android/opengl/GLES11.java android/opengl/GLES11Ext.java
|
||||
javac -d classes com/google/android/gles_jni/GLImpl.java javax/microedition/khronos/opengles/GL10.java javax/microedition/khronos/opengles/GL10Ext.java javax/microedition/khronos/opengles/GL11.java javax/microedition/khronos/opengles/GL11Ext.java javax/microedition/khronos/opengles/GL11ExtensionPack.java android/opengl/GLES10.java android/opengl/GLES10Ext.java android/opengl/GLES11.java android/opengl/GLES11Ext.java android/opengl/GLES20.java
|
||||
popd > /dev/null
|
||||
JAVA_RESULT=$?
|
||||
if [ $JAVA_RESULT -ne 0 ]; then
|
||||
@ -109,7 +109,7 @@ do
|
||||
compareGenerated ../../java/javax/microedition/khronos/opengles generated/javax/microedition/khronos/opengles $x
|
||||
done
|
||||
|
||||
for x in GLES10 GLES10Ext GLES11 GLES11Ext
|
||||
for x in GLES10 GLES10Ext GLES11 GLES11Ext GLES20
|
||||
do
|
||||
compareGenerated ../../java/android/opengl generated/android/opengl ${x}.java
|
||||
compareGenerated ../../../core/jni generated/C android_opengl_${x}.cpp
|
||||
|
142
opengl/tools/glgen/specs/gles11/GLES20.spec
Normal file
142
opengl/tools/glgen/specs/gles11/GLES20.spec
Normal file
@ -0,0 +1,142 @@
|
||||
void glActiveTexture ( GLenum texture )
|
||||
void glAttachShader ( GLuint program, GLuint shader )
|
||||
void glBindAttribLocation ( GLuint program, GLuint index, const char *name )
|
||||
void glBindBuffer ( GLenum target, GLuint buffer )
|
||||
void glBindFramebuffer ( GLenum target, GLuint framebuffer )
|
||||
void glBindRenderbuffer ( GLenum target, GLuint renderbuffer )
|
||||
void glBindTexture ( GLenum target, GLuint texture )
|
||||
void glBlendColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
|
||||
void glBlendEquation ( GLenum mode )
|
||||
void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha )
|
||||
void glBlendFunc ( GLenum sfactor, GLenum dfactor )
|
||||
void glBlendFuncSeparate ( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha )
|
||||
void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage )
|
||||
void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data )
|
||||
GLenum glCheckFramebufferStatus ( GLenum target )
|
||||
void glClear ( GLbitfield mask )
|
||||
void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
|
||||
void glClearDepthf ( GLclampf depth )
|
||||
void glClearStencil ( GLint s )
|
||||
void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha )
|
||||
void glCompileShader ( GLuint shader )
|
||||
void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )
|
||||
void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data )
|
||||
void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border )
|
||||
void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height )
|
||||
GLuint glCreateProgram ( void )
|
||||
GLuint glCreateShader ( GLenum type )
|
||||
void glCullFace ( GLenum mode )
|
||||
void glDeleteBuffers ( GLsizei n, const GLuint *buffers )
|
||||
void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers )
|
||||
void glDeleteProgram ( GLuint program )
|
||||
void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers )
|
||||
void glDeleteShader ( GLuint shader )
|
||||
void glDeleteTextures ( GLsizei n, const GLuint *textures )
|
||||
void glDepthFunc ( GLenum func )
|
||||
void glDepthMask ( GLboolean flag )
|
||||
void glDepthRangef ( GLclampf zNear, GLclampf zFar )
|
||||
void glDetachShader ( GLuint program, GLuint shader )
|
||||
void glDisable ( GLenum cap )
|
||||
void glDisableVertexAttribArray ( GLuint index )
|
||||
void glDrawArrays ( GLenum mode, GLint first, GLsizei count )
|
||||
void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices )
|
||||
void glEnable ( GLenum cap )
|
||||
void glEnableVertexAttribArray ( GLuint index )
|
||||
void glFinish ( void )
|
||||
void glFlush ( void )
|
||||
void glFramebufferRenderbuffer ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer )
|
||||
void glFramebufferTexture2D ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level )
|
||||
void glFrontFace ( GLenum mode )
|
||||
void glGenBuffers ( GLsizei n, GLuint *buffers )
|
||||
void glGenerateMipmap ( GLenum target )
|
||||
void glGenFramebuffers ( GLsizei n, GLuint *framebuffers )
|
||||
void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers )
|
||||
void glGenTextures ( GLsizei n, GLuint *textures )
|
||||
void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )
|
||||
void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name )
|
||||
void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders )
|
||||
int glGetAttribLocation ( GLuint program, const char *name )
|
||||
void glGetBooleanv ( GLenum pname, GLboolean *params )
|
||||
void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params )
|
||||
GLenum glGetError ( void )
|
||||
void glGetFloatv ( GLenum pname, GLfloat *params )
|
||||
void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params )
|
||||
void glGetIntegerv ( GLenum pname, GLint *params )
|
||||
void glGetProgramiv ( GLuint program, GLenum pname, GLint *params )
|
||||
void glGetProgramInfoLog ( GLuint program, GLsizei bufsize, GLsizei *length, char *infolog )
|
||||
void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params )
|
||||
void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params )
|
||||
void glGetShaderInfoLog ( GLuint shader, GLsizei bufsize, GLsizei *length, char *infolog )
|
||||
void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision )
|
||||
void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source )
|
||||
const GLubyte * glGetString ( GLenum name )
|
||||
void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params )
|
||||
void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params )
|
||||
void glGetUniformfv ( GLuint program, GLint location, GLfloat *params )
|
||||
void glGetUniformiv ( GLuint program, GLint location, GLint *params )
|
||||
int glGetUniformLocation ( GLuint program, const char *name )
|
||||
void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params )
|
||||
void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params )
|
||||
// void glGetVertexAttribPointerv ( GLuint index, GLenum pname, void **pointer )
|
||||
void glHint ( GLenum target, GLenum mode )
|
||||
GLboolean glIsBuffer ( GLuint buffer )
|
||||
GLboolean glIsEnabled ( GLenum cap )
|
||||
GLboolean glIsFramebuffer ( GLuint framebuffer )
|
||||
GLboolean glIsProgram ( GLuint program )
|
||||
GLboolean glIsRenderbuffer ( GLuint renderbuffer )
|
||||
GLboolean glIsShader ( GLuint shader )
|
||||
GLboolean glIsTexture ( GLuint texture )
|
||||
void glLineWidth ( GLfloat width )
|
||||
void glLinkProgram ( GLuint program )
|
||||
void glPixelStorei ( GLenum pname, GLint param )
|
||||
void glPolygonOffset ( GLfloat factor, GLfloat units )
|
||||
void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )
|
||||
void glReleaseShaderCompiler ( void )
|
||||
void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height )
|
||||
void glSampleCoverage ( GLclampf value, GLboolean invert )
|
||||
void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height )
|
||||
void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length )
|
||||
void glShaderSource ( GLuint shader )
|
||||
void glStencilFunc ( GLenum func, GLint ref, GLuint mask )
|
||||
void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask )
|
||||
void glStencilMask ( GLuint mask )
|
||||
void glStencilMaskSeparate ( GLenum face, GLuint mask )
|
||||
void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass )
|
||||
void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass )
|
||||
void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels )
|
||||
void glTexParameterf ( GLenum target, GLenum pname, GLfloat param )
|
||||
void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params )
|
||||
void glTexParameteri ( GLenum target, GLenum pname, GLint param )
|
||||
void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params )
|
||||
void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels )
|
||||
void glUniform1f ( GLint location, GLfloat x )
|
||||
void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v )
|
||||
void glUniform1i ( GLint location, GLint x )
|
||||
void glUniform1iv ( GLint location, GLsizei count, const GLint *v )
|
||||
void glUniform2f ( GLint location, GLfloat x, GLfloat y )
|
||||
void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v )
|
||||
void glUniform2i ( GLint location, GLint x, GLint y )
|
||||
void glUniform2iv ( GLint location, GLsizei count, const GLint *v )
|
||||
void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z )
|
||||
void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v )
|
||||
void glUniform3i ( GLint location, GLint x, GLint y, GLint z )
|
||||
void glUniform3iv ( GLint location, GLsizei count, const GLint *v )
|
||||
void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w )
|
||||
void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v )
|
||||
void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w )
|
||||
void glUniform4iv ( GLint location, GLsizei count, const GLint *v )
|
||||
void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
|
||||
void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
|
||||
void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value )
|
||||
void glUseProgram ( GLuint program )
|
||||
void glValidateProgram ( GLuint program )
|
||||
void glVertexAttrib1f ( GLuint indx, GLfloat x )
|
||||
void glVertexAttrib1fv ( GLuint indx, const GLfloat *values )
|
||||
void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y )
|
||||
void glVertexAttrib2fv ( GLuint indx, const GLfloat *values )
|
||||
void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z )
|
||||
void glVertexAttrib3fv ( GLuint indx, const GLfloat *values )
|
||||
void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w )
|
||||
void glVertexAttrib4fv ( GLuint indx, const GLfloat *values )
|
||||
void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr )
|
||||
void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height )
|
@ -44,8 +44,12 @@ public class CType {
|
||||
baseType.equals("void");
|
||||
}
|
||||
|
||||
public boolean isConstCharPointer() {
|
||||
return isConst && isPointer && baseType.equals("char");
|
||||
}
|
||||
|
||||
public boolean isTypedPointer() {
|
||||
return isPointer() && !isVoid();
|
||||
return isPointer() && !isVoid() && !isConstCharPointer();
|
||||
}
|
||||
|
||||
public void setBaseType(String baseType) {
|
||||
|
@ -70,7 +70,7 @@ public class GenerateGLES {
|
||||
|
||||
// Generate files
|
||||
for(String suffix: new String[] {"GLES10", "GLES10Ext",
|
||||
"GLES11", "GLES11Ext"})
|
||||
"GLES11", "GLES11Ext", "GLES20"})
|
||||
{
|
||||
BufferedReader spec11Reader =
|
||||
new BufferedReader(new FileReader("specs/gles11/"
|
||||
|
@ -6,6 +6,7 @@ public class JType {
|
||||
String baseType;
|
||||
boolean isArray;
|
||||
boolean isClass;
|
||||
boolean isString;
|
||||
|
||||
static HashMap<CType,JType> typeMapping = new HashMap<CType,JType>();
|
||||
static HashMap<CType,JType> arrayTypeMapping = new HashMap<CType,JType>();
|
||||
@ -27,7 +28,10 @@ public class JType {
|
||||
typeMapping.put(new CType("GLubyte"), new JType("byte"));
|
||||
typeMapping.put(new CType("GLuint"), new JType("int"));
|
||||
typeMapping.put(new CType("void"), new JType("void"));
|
||||
typeMapping.put(new CType("GLubyte", true, true), new JType("String"));
|
||||
typeMapping.put(new CType("GLubyte", true, true), new JType("String", false, false));
|
||||
typeMapping.put(new CType("char", false, true), new JType("byte"));
|
||||
typeMapping.put(new CType("char", true, true), new JType("String", false, false));
|
||||
typeMapping.put(new CType("int"), new JType("int"));
|
||||
|
||||
// Untyped pointers map to untyped Buffers
|
||||
typeMapping.put(new CType("GLvoid", true, true),
|
||||
@ -42,6 +46,8 @@ public class JType {
|
||||
// Typed pointers map to typed Buffers
|
||||
typeMapping.put(new CType("GLboolean", false, true),
|
||||
new JType("java.nio.IntBuffer", true, false));
|
||||
typeMapping.put(new CType("GLenum", false, true),
|
||||
new JType("java.nio.IntBuffer", true, false));
|
||||
typeMapping.put(new CType("GLfixed", false, true),
|
||||
new JType("java.nio.IntBuffer", true, false));
|
||||
typeMapping.put(new CType("GLfixed", true, true),
|
||||
@ -54,6 +60,8 @@ public class JType {
|
||||
new JType("java.nio.IntBuffer", true, false));
|
||||
typeMapping.put(new CType("GLint", true, true),
|
||||
new JType("java.nio.IntBuffer", true, false));
|
||||
typeMapping.put(new CType("GLsizei", false, true),
|
||||
new JType("java.nio.IntBuffer", true, false));
|
||||
typeMapping.put(new CType("GLuint", false, true),
|
||||
new JType("java.nio.IntBuffer", true, false));
|
||||
typeMapping.put(new CType("GLuint", true, true),
|
||||
@ -62,8 +70,11 @@ public class JType {
|
||||
new JType("java.nio.ShortBuffer", true, false));
|
||||
|
||||
// Typed pointers map to arrays + offsets
|
||||
arrayTypeMapping.put(new CType("char", false, true),
|
||||
new JType("byte", false, true));
|
||||
arrayTypeMapping.put(new CType("GLboolean", false, true),
|
||||
new JType("boolean", false, true));
|
||||
arrayTypeMapping.put(new CType("GLenum", false, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLfixed", true, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLfixed", false, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLfloat", false, true), new JType("float", false, true));
|
||||
@ -71,6 +82,8 @@ public class JType {
|
||||
arrayTypeMapping.put(new CType("GLint", false, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLint", true, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLshort", true, true), new JType("short", false, true));
|
||||
arrayTypeMapping.put(new CType("GLsizei", false, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLsizei", true, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLuint", false, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLuint", true, true), new JType("int", false, true));
|
||||
arrayTypeMapping.put(new CType("GLintptr"), new JType("int", false, true));
|
||||
@ -109,6 +122,10 @@ public class JType {
|
||||
return isClass;
|
||||
}
|
||||
|
||||
public boolean isString() {
|
||||
return baseType.equals("String");
|
||||
}
|
||||
|
||||
public boolean isPrimitive() {
|
||||
return !isClass() && !isArray();
|
||||
}
|
||||
|
@ -37,6 +37,12 @@ public class JniCodeEmitter {
|
||||
jniName += "L";
|
||||
} else if (baseType.equals("byte")) {
|
||||
jniName += "B";
|
||||
} else if (baseType.equals("String")) {
|
||||
jniName += "Ljava/lang/String;";
|
||||
} else if (baseType.equals("void")) {
|
||||
// nothing.
|
||||
} else {
|
||||
throw new RuntimeException("Uknown primitive basetype " + baseType);
|
||||
}
|
||||
return jniName;
|
||||
}
|
||||
@ -629,7 +635,7 @@ public class JniCodeEmitter {
|
||||
}
|
||||
|
||||
// Append signature to function name
|
||||
String sig = getJniMangledName(signature).replace('.', '_');
|
||||
String sig = getJniMangledName(signature).replace('.', '_').replace('/', '_');
|
||||
out.print("__" + sig);
|
||||
outName += "__" + sig;
|
||||
|
||||
@ -652,6 +658,7 @@ public class JniCodeEmitter {
|
||||
nativeRegistrations.add(s);
|
||||
|
||||
List<Integer> nonPrimitiveArgs = new ArrayList<Integer>();
|
||||
List<Integer> stringArgs = new ArrayList<Integer>();
|
||||
int numBufferArgs = 0;
|
||||
List<String> bufferArgNames = new ArrayList<String>();
|
||||
|
||||
@ -682,6 +689,9 @@ public class JniCodeEmitter {
|
||||
} else {
|
||||
suffix = "";
|
||||
}
|
||||
if (argType.isString()) {
|
||||
stringArgs.add(new Integer(i));
|
||||
}
|
||||
|
||||
out.print(getJniType(argType) + " " + jfunc.getArgName(i) + suffix);
|
||||
}
|
||||
@ -692,14 +702,19 @@ public class JniCodeEmitter {
|
||||
|
||||
int numArrays = 0;
|
||||
int numBuffers = 0;
|
||||
int numStrings = 0;
|
||||
for (int i = 0; i < nonPrimitiveArgs.size(); i++) {
|
||||
int idx = nonPrimitiveArgs.get(i).intValue();
|
||||
if (jfunc.getArgType(idx).isArray()) {
|
||||
JType argType = jfunc.getArgType(idx);
|
||||
if (argType.isArray()) {
|
||||
++numArrays;
|
||||
}
|
||||
if (jfunc.getArgType(idx).isBuffer()) {
|
||||
if (argType.isBuffer()) {
|
||||
++numBuffers;
|
||||
}
|
||||
if (argType.isString()) {
|
||||
++numStrings;
|
||||
}
|
||||
}
|
||||
|
||||
// Emit method body
|
||||
@ -736,7 +751,9 @@ public class JniCodeEmitter {
|
||||
"android::gl::ogles_context_t *ctx = getContext(_env, _this);");
|
||||
}
|
||||
|
||||
boolean emitExceptionCheck = (numArrays > 0 || numBuffers > 0) &&
|
||||
boolean initializeReturnValue = stringArgs.size() > 0;
|
||||
|
||||
boolean emitExceptionCheck = (numArrays > 0 || numBuffers > 0 || numStrings > 0) &&
|
||||
hasNonConstArg(jfunc, cfunc, nonPrimitiveArgs);
|
||||
// mChecker.getChecks(cfunc.getName()) != null
|
||||
|
||||
@ -759,6 +776,9 @@ public class JniCodeEmitter {
|
||||
if (retval != null) {
|
||||
out.println(indent + returnType.getDeclaration() +
|
||||
" _returnValue = " + retval + ";");
|
||||
} else if (initializeReturnValue) {
|
||||
out.println(indent + returnType.getDeclaration() +
|
||||
" _returnValue = 0;");
|
||||
} else {
|
||||
out.println(indent + returnType.getDeclaration() +
|
||||
" _returnValue;");
|
||||
@ -789,7 +809,7 @@ public class JniCodeEmitter {
|
||||
jfunc.getArgName(idx) +
|
||||
"_base = (" + decl + ") 0;");
|
||||
}
|
||||
remaining = (numArrays <= 1 && numBuffers <= 1) ? "_remaining" :
|
||||
remaining = ((numArrays + numBuffers) <= 1) ? "_remaining" :
|
||||
"_" + cname + "Remaining";
|
||||
out.println(indent +
|
||||
"jint " + remaining + ";");
|
||||
@ -803,6 +823,40 @@ public class JniCodeEmitter {
|
||||
out.println();
|
||||
}
|
||||
|
||||
// Emit local variable declaration for strings
|
||||
if (stringArgs.size() > 0) {
|
||||
for (int i = 0; i < stringArgs.size(); i++) {
|
||||
int idx = stringArgs.get(i).intValue();
|
||||
int cIndex = jfunc.getArgCIndex(idx);
|
||||
String cname = cfunc.getArgName(cIndex);
|
||||
|
||||
out.println(indent + "const char* _native" + cname + " = 0;");
|
||||
}
|
||||
|
||||
out.println();
|
||||
}
|
||||
|
||||
// Null pointer checks and GetStringUTFChars
|
||||
if (stringArgs.size() > 0) {
|
||||
for (int i = 0; i < stringArgs.size(); i++) {
|
||||
int idx = stringArgs.get(i).intValue();
|
||||
int cIndex = jfunc.getArgCIndex(idx);
|
||||
String cname = cfunc.getArgName(cIndex);
|
||||
|
||||
CType type = cfunc.getArgType(jfunc.getArgCIndex(idx));
|
||||
String decl = type.getDeclaration();
|
||||
out.println(indent + "if (!" + cname + ") {");
|
||||
out.println(indent + " _env->ThrowNew(IAEClass, \"" + cname + " == null\");");
|
||||
out.println(indent + " goto exit;");
|
||||
needsExit = true;
|
||||
out.println(indent + "}");
|
||||
|
||||
out.println(indent + "_native" + cname + " = _env->GetStringUTFChars(" + cname + ", 0);");
|
||||
}
|
||||
|
||||
out.println();
|
||||
}
|
||||
|
||||
// Emit 'GetPrimitiveArrayCritical' for arrays
|
||||
// Emit 'GetPointer' calls for Buffer pointers
|
||||
int bufArgIdx = 0;
|
||||
@ -814,7 +868,7 @@ public class JniCodeEmitter {
|
||||
String cname = cfunc.getArgName(cIndex);
|
||||
offset = numArrays <= 1 ? "offset" :
|
||||
cname + "Offset";
|
||||
remaining = (numArrays <= 1 && numBuffers <= 1) ? "_remaining" :
|
||||
remaining = ((numArrays + numBuffers) <= 1) ? "_remaining" :
|
||||
"_" + cname + "Remaining";
|
||||
|
||||
if (jfunc.getArgType(idx).isArray()) {
|
||||
@ -957,8 +1011,11 @@ public class JniCodeEmitter {
|
||||
out.print(indent + indent +
|
||||
"(" +
|
||||
typecast +
|
||||
")" +
|
||||
cfunc.getArgName(i));
|
||||
")");
|
||||
if (cfunc.getArgType(i).isConstCharPointer()) {
|
||||
out.print("_native");
|
||||
}
|
||||
out.print(cfunc.getArgName(i));
|
||||
|
||||
if (i == numArgs - 1) {
|
||||
if (isPointerFunc) {
|
||||
@ -1025,6 +1082,22 @@ public class JniCodeEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
// Emit local variable declaration for strings
|
||||
if (stringArgs.size() > 0) {
|
||||
for (int i = 0; i < stringArgs.size(); i++) {
|
||||
int idx = stringArgs.get(i).intValue();
|
||||
int cIndex = jfunc.getArgCIndex(idx);
|
||||
String cname = cfunc.getArgName(cIndex);
|
||||
|
||||
out.println(indent + "if (_native" + cname + ") {");
|
||||
out.println(indent + " _env->ReleaseStringUTFChars(" + cname + ", _native" + cname + ");");
|
||||
out.println(indent + "}");
|
||||
}
|
||||
|
||||
out.println();
|
||||
}
|
||||
|
||||
|
||||
if (!isVoid) {
|
||||
out.println(indent + "return _returnValue;");
|
||||
}
|
||||
|
331
opengl/tools/glgen/stubs/gles11/GLES20Header.java-if
Normal file
331
opengl/tools/glgen/stubs/gles11/GLES20Header.java-if
Normal file
@ -0,0 +1,331 @@
|
||||
**
|
||||
** Copyright 2009, 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.
|
||||
*/
|
||||
|
||||
// This source file is automatically generated
|
||||
|
||||
package android.opengl;
|
||||
|
||||
/** OpenGL ES 2.0
|
||||
* @hide
|
||||
*/
|
||||
public class GLES20 {
|
||||
public static final int GL_ACTIVE_TEXTURE = 0x84E0;
|
||||
public static final int GL_DEPTH_BUFFER_BIT = 0x00000100;
|
||||
public static final int GL_STENCIL_BUFFER_BIT = 0x00000400;
|
||||
public static final int GL_COLOR_BUFFER_BIT = 0x00004000;
|
||||
public static final int GL_FALSE = 0;
|
||||
public static final int GL_TRUE = 1;
|
||||
public static final int GL_POINTS = 0x0000;
|
||||
public static final int GL_LINES = 0x0001;
|
||||
public static final int GL_LINE_LOOP = 0x0002;
|
||||
public static final int GL_LINE_STRIP = 0x0003;
|
||||
public static final int GL_TRIANGLES = 0x0004;
|
||||
public static final int GL_TRIANGLE_STRIP = 0x0005;
|
||||
public static final int GL_TRIANGLE_FAN = 0x0006;
|
||||
public static final int GL_ZERO = 0;
|
||||
public static final int GL_ONE = 1;
|
||||
public static final int GL_SRC_COLOR = 0x0300;
|
||||
public static final int GL_ONE_MINUS_SRC_COLOR = 0x0301;
|
||||
public static final int GL_SRC_ALPHA = 0x0302;
|
||||
public static final int GL_ONE_MINUS_SRC_ALPHA = 0x0303;
|
||||
public static final int GL_DST_ALPHA = 0x0304;
|
||||
public static final int GL_ONE_MINUS_DST_ALPHA = 0x0305;
|
||||
public static final int GL_DST_COLOR = 0x0306;
|
||||
public static final int GL_ONE_MINUS_DST_COLOR = 0x0307;
|
||||
public static final int GL_SRC_ALPHA_SATURATE = 0x0308;
|
||||
public static final int GL_FUNC_ADD = 0x8006;
|
||||
public static final int GL_BLEND_EQUATION = 0x8009;
|
||||
public static final int GL_BLEND_EQUATION_RGB = 0x8009; /* same as BLEND_EQUATION */
|
||||
public static final int GL_BLEND_EQUATION_ALPHA = 0x883D;
|
||||
public static final int GL_FUNC_SUBTRACT = 0x800A;
|
||||
public static final int GL_FUNC_REVERSE_SUBTRACT = 0x800B;
|
||||
public static final int GL_BLEND_DST_RGB = 0x80C8;
|
||||
public static final int GL_BLEND_SRC_RGB = 0x80C9;
|
||||
public static final int GL_BLEND_DST_ALPHA = 0x80CA;
|
||||
public static final int GL_BLEND_SRC_ALPHA = 0x80CB;
|
||||
public static final int GL_CONSTANT_COLOR = 0x8001;
|
||||
public static final int GL_ONE_MINUS_CONSTANT_COLOR = 0x8002;
|
||||
public static final int GL_CONSTANT_ALPHA = 0x8003;
|
||||
public static final int GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004;
|
||||
public static final int GL_BLEND_COLOR = 0x8005;
|
||||
public static final int GL_ARRAY_BUFFER = 0x8892;
|
||||
public static final int GL_ELEMENT_ARRAY_BUFFER = 0x8893;
|
||||
public static final int GL_ARRAY_BUFFER_BINDING = 0x8894;
|
||||
public static final int GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
|
||||
public static final int GL_STREAM_DRAW = 0x88E0;
|
||||
public static final int GL_STATIC_DRAW = 0x88E4;
|
||||
public static final int GL_DYNAMIC_DRAW = 0x88E8;
|
||||
public static final int GL_BUFFER_SIZE = 0x8764;
|
||||
public static final int GL_BUFFER_USAGE = 0x8765;
|
||||
public static final int GL_CURRENT_VERTEX_ATTRIB = 0x8626;
|
||||
public static final int GL_FRONT = 0x0404;
|
||||
public static final int GL_BACK = 0x0405;
|
||||
public static final int GL_FRONT_AND_BACK = 0x0408;
|
||||
public static final int GL_TEXTURE_2D = 0x0DE1;
|
||||
public static final int GL_CULL_FACE = 0x0B44;
|
||||
public static final int GL_BLEND = 0x0BE2;
|
||||
public static final int GL_DITHER = 0x0BD0;
|
||||
public static final int GL_STENCIL_TEST = 0x0B90;
|
||||
public static final int GL_DEPTH_TEST = 0x0B71;
|
||||
public static final int GL_SCISSOR_TEST = 0x0C11;
|
||||
public static final int GL_POLYGON_OFFSET_FILL = 0x8037;
|
||||
public static final int GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E;
|
||||
public static final int GL_SAMPLE_COVERAGE = 0x80A0;
|
||||
public static final int GL_NO_ERROR = 0;
|
||||
public static final int GL_INVALID_ENUM = 0x0500;
|
||||
public static final int GL_INVALID_VALUE = 0x0501;
|
||||
public static final int GL_INVALID_OPERATION = 0x0502;
|
||||
public static final int GL_OUT_OF_MEMORY = 0x0505;
|
||||
public static final int GL_CW = 0x0900;
|
||||
public static final int GL_CCW = 0x0901;
|
||||
public static final int GL_LINE_WIDTH = 0x0B21;
|
||||
public static final int GL_ALIASED_POINT_SIZE_RANGE = 0x846D;
|
||||
public static final int GL_ALIASED_LINE_WIDTH_RANGE = 0x846E;
|
||||
public static final int GL_CULL_FACE_MODE = 0x0B45;
|
||||
public static final int GL_FRONT_FACE = 0x0B46;
|
||||
public static final int GL_DEPTH_RANGE = 0x0B70;
|
||||
public static final int GL_DEPTH_WRITEMASK = 0x0B72;
|
||||
public static final int GL_DEPTH_CLEAR_VALUE = 0x0B73;
|
||||
public static final int GL_DEPTH_FUNC = 0x0B74;
|
||||
public static final int GL_STENCIL_CLEAR_VALUE = 0x0B91;
|
||||
public static final int GL_STENCIL_FUNC = 0x0B92;
|
||||
public static final int GL_STENCIL_FAIL = 0x0B94;
|
||||
public static final int GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95;
|
||||
public static final int GL_STENCIL_PASS_DEPTH_PASS = 0x0B96;
|
||||
public static final int GL_STENCIL_REF = 0x0B97;
|
||||
public static final int GL_STENCIL_VALUE_MASK = 0x0B93;
|
||||
public static final int GL_STENCIL_WRITEMASK = 0x0B98;
|
||||
public static final int GL_STENCIL_BACK_FUNC = 0x8800;
|
||||
public static final int GL_STENCIL_BACK_FAIL = 0x8801;
|
||||
public static final int GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
|
||||
public static final int GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
|
||||
public static final int GL_STENCIL_BACK_REF = 0x8CA3;
|
||||
public static final int GL_STENCIL_BACK_VALUE_MASK = 0x8CA4;
|
||||
public static final int GL_STENCIL_BACK_WRITEMASK = 0x8CA5;
|
||||
public static final int GL_VIEWPORT = 0x0BA2;
|
||||
public static final int GL_SCISSOR_BOX = 0x0C10;
|
||||
public static final int GL_COLOR_CLEAR_VALUE = 0x0C22;
|
||||
public static final int GL_COLOR_WRITEMASK = 0x0C23;
|
||||
public static final int GL_UNPACK_ALIGNMENT = 0x0CF5;
|
||||
public static final int GL_PACK_ALIGNMENT = 0x0D05;
|
||||
public static final int GL_MAX_TEXTURE_SIZE = 0x0D33;
|
||||
public static final int GL_MAX_VIEWPORT_DIMS = 0x0D3A;
|
||||
public static final int GL_SUBPIXEL_BITS = 0x0D50;
|
||||
public static final int GL_RED_BITS = 0x0D52;
|
||||
public static final int GL_GREEN_BITS = 0x0D53;
|
||||
public static final int GL_BLUE_BITS = 0x0D54;
|
||||
public static final int GL_ALPHA_BITS = 0x0D55;
|
||||
public static final int GL_DEPTH_BITS = 0x0D56;
|
||||
public static final int GL_STENCIL_BITS = 0x0D57;
|
||||
public static final int GL_POLYGON_OFFSET_UNITS = 0x2A00;
|
||||
public static final int GL_POLYGON_OFFSET_FACTOR = 0x8038;
|
||||
public static final int GL_TEXTURE_BINDING_2D = 0x8069;
|
||||
public static final int GL_SAMPLE_BUFFERS = 0x80A8;
|
||||
public static final int GL_SAMPLES = 0x80A9;
|
||||
public static final int GL_SAMPLE_COVERAGE_VALUE = 0x80AA;
|
||||
public static final int GL_SAMPLE_COVERAGE_INVERT = 0x80AB;
|
||||
public static final int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2;
|
||||
public static final int GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3;
|
||||
public static final int GL_DONT_CARE = 0x1100;
|
||||
public static final int GL_FASTEST = 0x1101;
|
||||
public static final int GL_NICEST = 0x1102;
|
||||
public static final int GL_GENERATE_MIPMAP_HINT = 0x8192;
|
||||
public static final int GL_BYTE = 0x1400;
|
||||
public static final int GL_UNSIGNED_BYTE = 0x1401;
|
||||
public static final int GL_SHORT = 0x1402;
|
||||
public static final int GL_UNSIGNED_SHORT = 0x1403;
|
||||
public static final int GL_INT = 0x1404;
|
||||
public static final int GL_UNSIGNED_INT = 0x1405;
|
||||
public static final int GL_FLOAT = 0x1406;
|
||||
public static final int GL_FIXED = 0x140C;
|
||||
public static final int GL_DEPTH_COMPONENT = 0x1902;
|
||||
public static final int GL_ALPHA = 0x1906;
|
||||
public static final int GL_RGB = 0x1907;
|
||||
public static final int GL_RGBA = 0x1908;
|
||||
public static final int GL_LUMINANCE = 0x1909;
|
||||
public static final int GL_LUMINANCE_ALPHA = 0x190A;
|
||||
public static final int GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033;
|
||||
public static final int GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034;
|
||||
public static final int GL_UNSIGNED_SHORT_5_6_5 = 0x8363;
|
||||
public static final int GL_FRAGMENT_SHADER = 0x8B30;
|
||||
public static final int GL_VERTEX_SHADER = 0x8B31;
|
||||
public static final int GL_MAX_VERTEX_ATTRIBS = 0x8869;
|
||||
public static final int GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB;
|
||||
public static final int GL_MAX_VARYING_VECTORS = 0x8DFC;
|
||||
public static final int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D;
|
||||
public static final int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C;
|
||||
public static final int GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872;
|
||||
public static final int GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD;
|
||||
public static final int GL_SHADER_TYPE = 0x8B4F;
|
||||
public static final int GL_DELETE_STATUS = 0x8B80;
|
||||
public static final int GL_LINK_STATUS = 0x8B82;
|
||||
public static final int GL_VALIDATE_STATUS = 0x8B83;
|
||||
public static final int GL_ATTACHED_SHADERS = 0x8B85;
|
||||
public static final int GL_ACTIVE_UNIFORMS = 0x8B86;
|
||||
public static final int GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87;
|
||||
public static final int GL_ACTIVE_ATTRIBUTES = 0x8B89;
|
||||
public static final int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A;
|
||||
public static final int GL_SHADING_LANGUAGE_VERSION = 0x8B8C;
|
||||
public static final int GL_CURRENT_PROGRAM = 0x8B8D;
|
||||
public static final int GL_NEVER = 0x0200;
|
||||
public static final int GL_LESS = 0x0201;
|
||||
public static final int GL_EQUAL = 0x0202;
|
||||
public static final int GL_LEQUAL = 0x0203;
|
||||
public static final int GL_GREATER = 0x0204;
|
||||
public static final int GL_NOTEQUAL = 0x0205;
|
||||
public static final int GL_GEQUAL = 0x0206;
|
||||
public static final int GL_ALWAYS = 0x0207;
|
||||
public static final int GL_KEEP = 0x1E00;
|
||||
public static final int GL_REPLACE = 0x1E01;
|
||||
public static final int GL_INCR = 0x1E02;
|
||||
public static final int GL_DECR = 0x1E03;
|
||||
public static final int GL_INVERT = 0x150A;
|
||||
public static final int GL_INCR_WRAP = 0x8507;
|
||||
public static final int GL_DECR_WRAP = 0x8508;
|
||||
public static final int GL_VENDOR = 0x1F00;
|
||||
public static final int GL_RENDERER = 0x1F01;
|
||||
public static final int GL_VERSION = 0x1F02;
|
||||
public static final int GL_EXTENSIONS = 0x1F03;
|
||||
public static final int GL_NEAREST = 0x2600;
|
||||
public static final int GL_LINEAR = 0x2601;
|
||||
public static final int GL_NEAREST_MIPMAP_NEAREST = 0x2700;
|
||||
public static final int GL_LINEAR_MIPMAP_NEAREST = 0x2701;
|
||||
public static final int GL_NEAREST_MIPMAP_LINEAR = 0x2702;
|
||||
public static final int GL_LINEAR_MIPMAP_LINEAR = 0x2703;
|
||||
public static final int GL_TEXTURE_MAG_FILTER = 0x2800;
|
||||
public static final int GL_TEXTURE_MIN_FILTER = 0x2801;
|
||||
public static final int GL_TEXTURE_WRAP_S = 0x2802;
|
||||
public static final int GL_TEXTURE_WRAP_T = 0x2803;
|
||||
public static final int GL_TEXTURE = 0x1702;
|
||||
public static final int GL_TEXTURE_CUBE_MAP = 0x8513;
|
||||
public static final int GL_TEXTURE_BINDING_CUBE_MAP = 0x8514;
|
||||
public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
|
||||
public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
|
||||
public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
|
||||
public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
|
||||
public static final int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
|
||||
public static final int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A;
|
||||
public static final int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C;
|
||||
public static final int GL_TEXTURE0 = 0x84C0;
|
||||
public static final int GL_TEXTURE1 = 0x84C1;
|
||||
public static final int GL_TEXTURE2 = 0x84C2;
|
||||
public static final int GL_TEXTURE3 = 0x84C3;
|
||||
public static final int GL_TEXTURE4 = 0x84C4;
|
||||
public static final int GL_TEXTURE5 = 0x84C5;
|
||||
public static final int GL_TEXTURE6 = 0x84C6;
|
||||
public static final int GL_TEXTURE7 = 0x84C7;
|
||||
public static final int GL_TEXTURE8 = 0x84C8;
|
||||
public static final int GL_TEXTURE9 = 0x84C9;
|
||||
public static final int GL_TEXTURE10 = 0x84CA;
|
||||
public static final int GL_TEXTURE11 = 0x84CB;
|
||||
public static final int GL_TEXTURE12 = 0x84CC;
|
||||
public static final int GL_TEXTURE13 = 0x84CD;
|
||||
public static final int GL_TEXTURE14 = 0x84CE;
|
||||
public static final int GL_TEXTURE15 = 0x84CF;
|
||||
public static final int GL_TEXTURE16 = 0x84D0;
|
||||
public static final int GL_TEXTURE17 = 0x84D1;
|
||||
public static final int GL_TEXTURE18 = 0x84D2;
|
||||
public static final int GL_TEXTURE19 = 0x84D3;
|
||||
public static final int GL_TEXTURE20 = 0x84D4;
|
||||
public static final int GL_TEXTURE21 = 0x84D5;
|
||||
public static final int GL_TEXTURE22 = 0x84D6;
|
||||
public static final int GL_TEXTURE23 = 0x84D7;
|
||||
public static final int GL_TEXTURE24 = 0x84D8;
|
||||
public static final int GL_TEXTURE25 = 0x84D9;
|
||||
public static final int GL_TEXTURE26 = 0x84DA;
|
||||
public static final int GL_TEXTURE27 = 0x84DB;
|
||||
public static final int GL_TEXTURE28 = 0x84DC;
|
||||
public static final int GL_TEXTURE29 = 0x84DD;
|
||||
public static final int GL_TEXTURE30 = 0x84DE;
|
||||
public static final int GL_TEXTURE31 = 0x84DF;
|
||||
public static final int GL_REPEAT = 0x2901;
|
||||
public static final int GL_CLAMP_TO_EDGE = 0x812F;
|
||||
public static final int GL_MIRRORED_REPEAT = 0x8370;
|
||||
public static final int GL_FLOAT_VEC2 = 0x8B50;
|
||||
public static final int GL_FLOAT_VEC3 = 0x8B51;
|
||||
public static final int GL_FLOAT_VEC4 = 0x8B52;
|
||||
public static final int GL_INT_VEC2 = 0x8B53;
|
||||
public static final int GL_INT_VEC3 = 0x8B54;
|
||||
public static final int GL_INT_VEC4 = 0x8B55;
|
||||
public static final int GL_BOOL = 0x8B56;
|
||||
public static final int GL_BOOL_VEC2 = 0x8B57;
|
||||
public static final int GL_BOOL_VEC3 = 0x8B58;
|
||||
public static final int GL_BOOL_VEC4 = 0x8B59;
|
||||
public static final int GL_FLOAT_MAT2 = 0x8B5A;
|
||||
public static final int GL_FLOAT_MAT3 = 0x8B5B;
|
||||
public static final int GL_FLOAT_MAT4 = 0x8B5C;
|
||||
public static final int GL_SAMPLER_2D = 0x8B5E;
|
||||
public static final int GL_SAMPLER_CUBE = 0x8B60;
|
||||
public static final int GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
|
||||
public static final int GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
|
||||
public static final int GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
|
||||
public static final int GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
|
||||
public static final int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A;
|
||||
public static final int GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
|
||||
public static final int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F;
|
||||
public static final int GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A;
|
||||
public static final int GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
|
||||
public static final int GL_COMPILE_STATUS = 0x8B81;
|
||||
public static final int GL_INFO_LOG_LENGTH = 0x8B84;
|
||||
public static final int GL_SHADER_SOURCE_LENGTH = 0x8B88;
|
||||
public static final int GL_SHADER_COMPILER = 0x8DFA;
|
||||
public static final int GL_SHADER_BINARY_FORMATS = 0x8DF8;
|
||||
public static final int GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9;
|
||||
public static final int GL_LOW_FLOAT = 0x8DF0;
|
||||
public static final int GL_MEDIUM_FLOAT = 0x8DF1;
|
||||
public static final int GL_HIGH_FLOAT = 0x8DF2;
|
||||
public static final int GL_LOW_INT = 0x8DF3;
|
||||
public static final int GL_MEDIUM_INT = 0x8DF4;
|
||||
public static final int GL_HIGH_INT = 0x8DF5;
|
||||
public static final int GL_FRAMEBUFFER = 0x8D40;
|
||||
public static final int GL_RENDERBUFFER = 0x8D41;
|
||||
public static final int GL_RGBA4 = 0x8056;
|
||||
public static final int GL_RGB5_A1 = 0x8057;
|
||||
public static final int GL_RGB565 = 0x8D62;
|
||||
public static final int GL_DEPTH_COMPONENT16 = 0x81A5;
|
||||
public static final int GL_STENCIL_INDEX = 0x1901;
|
||||
public static final int GL_STENCIL_INDEX8 = 0x8D48;
|
||||
public static final int GL_RENDERBUFFER_WIDTH = 0x8D42;
|
||||
public static final int GL_RENDERBUFFER_HEIGHT = 0x8D43;
|
||||
public static final int GL_RENDERBUFFER_INTERNAL_FORMAT = 0x8D44;
|
||||
public static final int GL_RENDERBUFFER_RED_SIZE = 0x8D50;
|
||||
public static final int GL_RENDERBUFFER_GREEN_SIZE = 0x8D51;
|
||||
public static final int GL_RENDERBUFFER_BLUE_SIZE = 0x8D52;
|
||||
public static final int GL_RENDERBUFFER_ALPHA_SIZE = 0x8D53;
|
||||
public static final int GL_RENDERBUFFER_DEPTH_SIZE = 0x8D54;
|
||||
public static final int GL_RENDERBUFFER_STENCIL_SIZE = 0x8D55;
|
||||
public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0;
|
||||
public static final int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1;
|
||||
public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2;
|
||||
public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3;
|
||||
public static final int GL_COLOR_ATTACHMENT0 = 0x8CE0;
|
||||
public static final int GL_DEPTH_ATTACHMENT = 0x8D00;
|
||||
public static final int GL_STENCIL_ATTACHMENT = 0x8D20;
|
||||
public static final int GL_NONE = 0;
|
||||
public static final int GL_FRAMEBUFFER_COMPLETE = 0x8CD5;
|
||||
public static final int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6;
|
||||
public static final int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7;
|
||||
public static final int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9;
|
||||
public static final int GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD;
|
||||
public static final int GL_FRAMEBUFFER_BINDING = 0x8CA6;
|
||||
public static final int GL_RENDERBUFFER_BINDING = 0x8CA7;
|
||||
public static final int GL_MAX_RENDERBUFFER_SIZE = 0x84E8;
|
||||
public static final int GL_INVALID_FRAMEBUFFER_OPERATION = 0x0506;
|
||||
|
||||
native private static void _nativeClassInit();
|
||||
static {
|
||||
_nativeClassInit();
|
||||
}
|
150
opengl/tools/glgen/stubs/gles11/GLES20cHeader.cpp
Normal file
150
opengl/tools/glgen/stubs/gles11/GLES20cHeader.cpp
Normal file
@ -0,0 +1,150 @@
|
||||
**
|
||||
** Copyright 2009, 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.
|
||||
*/
|
||||
|
||||
// This source file is automatically generated
|
||||
|
||||
#include <android_runtime/AndroidRuntime.h>
|
||||
#include <utils/misc.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <GLES2/gl2.h>
|
||||
#include <GLES2/gl2ext.h>
|
||||
|
||||
static int initialized = 0;
|
||||
|
||||
static jclass nioAccessClass;
|
||||
static jclass bufferClass;
|
||||
static jclass OOMEClass;
|
||||
static jclass UOEClass;
|
||||
static jclass IAEClass;
|
||||
static jclass AIOOBEClass;
|
||||
static jmethodID getBasePointerID;
|
||||
static jmethodID getBaseArrayID;
|
||||
static jmethodID getBaseArrayOffsetID;
|
||||
static jfieldID positionID;
|
||||
static jfieldID limitID;
|
||||
static jfieldID elementSizeShiftID;
|
||||
|
||||
/* Cache method IDs each time the class is loaded. */
|
||||
|
||||
static void
|
||||
nativeClassInitBuffer(JNIEnv *_env)
|
||||
{
|
||||
jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
|
||||
nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
|
||||
|
||||
jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
|
||||
bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
|
||||
|
||||
getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
|
||||
"getBasePointer", "(Ljava/nio/Buffer;)J");
|
||||
getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
|
||||
"getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
|
||||
getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
|
||||
"getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
|
||||
|
||||
positionID = _env->GetFieldID(bufferClass, "position", "I");
|
||||
limitID = _env->GetFieldID(bufferClass, "limit", "I");
|
||||
elementSizeShiftID =
|
||||
_env->GetFieldID(bufferClass, "_elementSizeShift", "I");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
nativeClassInit(JNIEnv *_env, jclass glImplClass)
|
||||
{
|
||||
nativeClassInitBuffer(_env);
|
||||
|
||||
jclass IAEClassLocal =
|
||||
_env->FindClass("java/lang/IllegalArgumentException");
|
||||
jclass OOMEClassLocal =
|
||||
_env->FindClass("java/lang/OutOfMemoryError");
|
||||
jclass UOEClassLocal =
|
||||
_env->FindClass("java/lang/UnsupportedOperationException");
|
||||
jclass AIOOBEClassLocal =
|
||||
_env->FindClass("java/lang/ArrayIndexOutOfBoundsException");
|
||||
|
||||
IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal);
|
||||
OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal);
|
||||
UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal);
|
||||
AIOOBEClass = (jclass) _env->NewGlobalRef(AIOOBEClassLocal);
|
||||
}
|
||||
|
||||
static void *
|
||||
getPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining)
|
||||
{
|
||||
jint position;
|
||||
jint limit;
|
||||
jint elementSizeShift;
|
||||
jlong pointer;
|
||||
jint offset;
|
||||
void *data;
|
||||
|
||||
position = _env->GetIntField(buffer, positionID);
|
||||
limit = _env->GetIntField(buffer, limitID);
|
||||
elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
|
||||
*remaining = (limit - position) << elementSizeShift;
|
||||
pointer = _env->CallStaticLongMethod(nioAccessClass,
|
||||
getBasePointerID, buffer);
|
||||
if (pointer != 0L) {
|
||||
*array = NULL;
|
||||
return (void *) (jint) pointer;
|
||||
}
|
||||
|
||||
*array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
|
||||
getBaseArrayID, buffer);
|
||||
offset = _env->CallStaticIntMethod(nioAccessClass,
|
||||
getBaseArrayOffsetID, buffer);
|
||||
data = _env->GetPrimitiveArrayCritical(*array, (jboolean *) 0);
|
||||
|
||||
return (void *) ((char *) data + offset);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
releasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
|
||||
{
|
||||
_env->ReleasePrimitiveArrayCritical(array, data,
|
||||
commit ? 0 : JNI_ABORT);
|
||||
}
|
||||
|
||||
static void *
|
||||
getDirectBufferPointer(JNIEnv *_env, jobject buffer) {
|
||||
char* buf = (char*) _env->GetDirectBufferAddress(buffer);
|
||||
if (buf) {
|
||||
jint position = _env->GetIntField(buffer, positionID);
|
||||
jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
|
||||
buf += position << elementSizeShift;
|
||||
} else {
|
||||
_env->ThrowNew(IAEClass, "Must use a native order direct Buffer");
|
||||
}
|
||||
return (void*) buf;
|
||||
}
|
||||
|
||||
static int
|
||||
getNumCompressedTextureFormats() {
|
||||
int numCompressedTextureFormats = 0;
|
||||
glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCompressedTextureFormats);
|
||||
return numCompressedTextureFormats;
|
||||
}
|
||||
|
||||
static void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
|
||||
GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
|
||||
glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
27
opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.cpp
Normal file
27
opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
#include <string.h>
|
||||
|
||||
/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
|
||||
static
|
||||
jstring
|
||||
android_glGetProgramInfoLog (JNIEnv *_env, jobject _this, jint shader) {
|
||||
GLint infoLen = 0;
|
||||
jstring _result = 0;
|
||||
char* buf = 0;
|
||||
glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
|
||||
if (infoLen) {
|
||||
char* buf = (char*) malloc(infoLen);
|
||||
if (buf == 0) {
|
||||
_env->ThrowNew(IAEClass, "out of memory");
|
||||
goto exit;
|
||||
}
|
||||
glGetProgramInfoLog(shader, infoLen, NULL, buf);
|
||||
_result = _env->NewStringUTF(buf);
|
||||
} else {
|
||||
_result = _env->NewStringUTF("");
|
||||
}
|
||||
exit:
|
||||
if (buf) {
|
||||
free(buf);
|
||||
}
|
||||
return _result;
|
||||
}
|
6
opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
Normal file
6
opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java
Normal file
@ -0,0 +1,6 @@
|
||||
// C function void glGetProgramInfoLog( GLuint program, GLsizei maxLength, GLsizei * length,
|
||||
// GLchar * infoLog);
|
||||
|
||||
public static native String glGetProgramInfoLog(
|
||||
int program
|
||||
);
|
@ -0,0 +1 @@
|
||||
{"glGetProgramInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramInfoLog },
|
27
opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.cpp
Normal file
27
opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
#include <string.h>
|
||||
|
||||
/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
|
||||
static
|
||||
jstring
|
||||
android_glGetShaderInfoLog (JNIEnv *_env, jobject _this, jint shader) {
|
||||
GLint infoLen = 0;
|
||||
jstring _result = 0;
|
||||
char* buf = 0;
|
||||
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
|
||||
if (infoLen) {
|
||||
char* buf = (char*) malloc(infoLen);
|
||||
if (buf == 0) {
|
||||
_env->ThrowNew(IAEClass, "out of memory");
|
||||
goto exit;
|
||||
}
|
||||
glGetShaderInfoLog(shader, infoLen, NULL, buf);
|
||||
_result = _env->NewStringUTF(buf);
|
||||
} else {
|
||||
_result = _env->NewStringUTF("");
|
||||
}
|
||||
exit:
|
||||
if (buf) {
|
||||
free(buf);
|
||||
}
|
||||
return _result;
|
||||
}
|
6
opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
Normal file
6
opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java
Normal file
@ -0,0 +1,6 @@
|
||||
// C function void glGetShaderInfoLog( GLuint shader, GLsizei maxLength, GLsizei * length,
|
||||
// GLchar * infoLog);
|
||||
|
||||
public static native String glGetShaderInfoLog(
|
||||
int shader
|
||||
);
|
@ -0,0 +1 @@
|
||||
{"glGetShaderInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetShaderInfoLog },
|
17
opengl/tools/glgen/stubs/gles11/glShaderSource.cpp
Normal file
17
opengl/tools/glgen/stubs/gles11/glShaderSource.cpp
Normal file
@ -0,0 +1,17 @@
|
||||
|
||||
/* void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint * length ) */
|
||||
static
|
||||
void
|
||||
android_glShaderSource
|
||||
(JNIEnv *_env, jobject _this, jint shader, jstring string) {
|
||||
|
||||
if (!string) {
|
||||
_env->ThrowNew(IAEClass, "string == null");
|
||||
return;
|
||||
}
|
||||
|
||||
const char* nativeString = _env->GetStringUTFChars(string, 0);
|
||||
const char* strings[] = {nativeString};
|
||||
glShaderSource(shader, 1, strings, 0);
|
||||
_env->ReleaseStringUTFChars(string, nativeString);
|
||||
}
|
6
opengl/tools/glgen/stubs/gles11/glShaderSource.java
Normal file
6
opengl/tools/glgen/stubs/gles11/glShaderSource.java
Normal file
@ -0,0 +1,6 @@
|
||||
// C function void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint* length )
|
||||
|
||||
public static native void glShaderSource(
|
||||
int shader,
|
||||
String string
|
||||
);
|
1
opengl/tools/glgen/stubs/gles11/glShaderSource.nativeReg
Normal file
1
opengl/tools/glgen/stubs/gles11/glShaderSource.nativeReg
Normal file
@ -0,0 +1 @@
|
||||
{"glShaderSource", "(ILjava/lang/String;)V", (void *) android_glShaderSource },
|
Loading…
Reference in New Issue
Block a user