RenderScript.java revision bba134c8a1dcfe0c8473307a95899a02c9553504
160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/*
260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Copyright (C) 2008 The Android Open Source Project
360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich *
460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License");
560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * you may not use this file except in compliance with the License.
660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * You may obtain a copy of the License at
760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich *
860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich *      http://www.apache.org/licenses/LICENSE-2.0
960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich *
1060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * Unless required by applicable law or agreed to in writing, software
1160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS,
1260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * See the License for the specific language governing permissions and
1460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * limitations under the License.
1560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */
1660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
1794d8e90ad78ee1dbc0efa315117688abd126ae55Jason Samspackage android.renderscript;
1860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
1943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichimport java.io.InputStream;
2043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichimport java.io.IOException;
2143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
2260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.os.Bundle;
2343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevichimport android.content.res.Resources;
2460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.util.Log;
2560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.util.Config;
2660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.Menu;
2760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.MenuItem;
2860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.Window;
2960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.View;
3060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichimport android.view.Surface;
31fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsimport android.graphics.Bitmap;
32fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Samsimport android.graphics.Color;
3360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
3460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript {
3560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final String LOG_TAG = "libRS_jni";
3660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final boolean DEBUG  = false;
3760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV;
3860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
3960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams     /*
4260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     * We use a class initializer to allow the native code to cache some
4360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     * field offsets.
4460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich     */
4560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private static boolean sInitialized;
4660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private static void _nInit();
4760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
4860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    static {
4960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        sInitialized = false;
5060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        try {
5160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            System.loadLibrary("RS_jni");
5260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            _nInit();
5360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            sInitialized = true;
5460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        } catch (UnsatisfiedLinkError e) {
5560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            Log.d(LOG_TAG, "RenderScript JNI library not found!");
5660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
5760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
5860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
5960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nDeviceCreate();
6060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nDeviceDestroy(int dev);
6160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nContextCreate(int dev, Surface sur, int ver);
6260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextDestroy(int con);
6360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //void rsContextBindSampler (uint32_t slot, RsSampler sampler);
6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //void rsContextBindRootScript (RsScript sampler);
6660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindRootScript(int script);
6760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindSampler(int sampler, int slot);
6860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindProgramFragmentStore(int pfs);
6960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nContextBindProgramFragment(int pf);
700826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    native private void nContextBindProgramVertex(int pf);
7160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
723eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams    native private void nAssignName(int obj, byte[] name);
733eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams
7460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementBegin();
7560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementAddPredefined(int predef);
7660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementAdd(int kind, int type, int norm, int bits);
7760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nElementCreate();
7860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nElementGetPredefined(int predef);
7960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nElementDestroy(int obj);
8060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
8160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTypeBegin(int elementID);
8260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTypeAdd(int dim, int val);
8360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nTypeCreate();
8460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTypeDestroy(int id);
8560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
8660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAllocationCreateTyped(int type);
8760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAllocationCreatePredefSized(int predef, int count);
8860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAllocationCreateSized(int elem, int count);
89ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams    native private int  nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp);
90fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams
9160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationUploadToTexture(int alloc, int baseMioLevel);
9260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationDestroy(int alloc);
9360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationData(int id, int[] d);
9460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationData(int id, float[] d);
9560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData1D(int id, int off, int count, int[] d);
9660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData1D(int id, int off, int count, float[] d);
9760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d);
9860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d);
9960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
10060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshDestroy(int id);
10160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshBegin(int vertex, int index);
10260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XY (float x, float y);
10360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XYZ (float x, float y, float z);
10460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t);
10560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t);
1060826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    native private void nTriangleMeshAddVertex_XYZ_ST_NORM (float x, float y, float z, float s, float t, float nx, float ny, float nz);
10760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nTriangleMeshAddTriangle(int i1, int i2, int i3);
10860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nTriangleMeshCreate();
10960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
11060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DDestroy(int id);
11160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DBindAllocation(int ad, int alloc);
11260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DSetConstraint(int ad, int dim, int value);
11360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DData(int ad, int[] d);
11460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DSubData(int ad, int off, int count, int[] d);
11560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DData(int ad, float[] d);
11660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nAdapter1DSubData(int ad, int off, int count, float[] d);
11760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nAdapter1DCreate();
11860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
11960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptDestroy(int script);
12060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptBindAllocation(int vtm, int alloc, int slot);
12160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCBegin();
12260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetClearColor(float r, float g, float b, float a);
12360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetClearDepth(float depth);
12460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetClearStencil(int stencil);
12560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCAddType(int type);
12660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nScriptCSetRoot(boolean isRoot);
12743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    native private void nScriptCSetScript(byte[] script, int offset, int length);
12860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nScriptCCreate();
12960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
13002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private void nSamplerDestroy(int sampler);
13102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private void nSamplerBegin();
13202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private void nSamplerSet(int param, int value);
13302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    native private int  nSamplerCreate();
13460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
13560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreBegin(int in, int out);
13660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreDepthFunc(int func);
13760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreDepthMask(boolean enable);
13860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a);
13960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreBlendFunc(int src, int dst);
14060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentStoreDither(boolean enable);
14160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nProgramFragmentStoreCreate();
1423eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams    native private void nProgramFragmentStoreDestroy(int pgm);
14360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
14460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentBegin(int in, int out);
14560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentBindTexture(int vpf, int slot, int a);
14660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentBindSampler(int vpf, int slot, int s);
14760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentSetType(int slot, int vt);
14860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentSetEnvMode(int slot, int env);
14960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private void nProgramFragmentSetTexEnable(int slot, boolean enable);
15060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    native private int  nProgramFragmentCreate();
1513eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams    native private void nProgramFragmentDestroy(int pgm);
15260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
1531fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    native private void nProgramVertexDestroy(int pv);
1541fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    native private void nProgramVertexBindAllocation(int pv, int slot, int mID);
1551fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    native private void nProgramVertexBegin(int inID, int outID);
1561fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    native private void nProgramVertexSetType(int slot, int mID);
1571fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    native private void nProgramVertexSetTextureMatrixEnable(boolean enable);
1581fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    native private int  nProgramVertexCreate();
1591fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
160bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    native private void nLightBegin();
161bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    native private void nLightSetIsMono(boolean isMono);
162bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    native private void nLightSetIsLocal(boolean isLocal);
163bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    native private int  nLightCreate();
164bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    native private void nLightDestroy(int l);
165bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    native private void nLightSetColor(int l, float r, float g, float b);
166bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    native private void nLightSetPosition(int l, float x, float y, float z);
167bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
16860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
16960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private int     mDev;
17060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private int     mContext;
17160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private Surface mSurface;
17260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
17360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
17460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
17560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    ///////////////////////////////////////////////////////////////////////////////////
17643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    //
17760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
17860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RenderScript(Surface sur) {
17960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mSurface = sur;
18060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mDev = nDeviceCreate();
18160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        mContext = nContextCreate(mDev, mSurface, 0);
18260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
18360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
18460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    private class BaseObj {
18560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BaseObj() {
18660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
18760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
18860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
18994d8e90ad78ee1dbc0efa315117688abd126ae55Jason Sams        public int getID() {
19094d8e90ad78ee1dbc0efa315117688abd126ae55Jason Sams            return mID;
19194d8e90ad78ee1dbc0efa315117688abd126ae55Jason Sams        }
19294d8e90ad78ee1dbc0efa315117688abd126ae55Jason Sams
19360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
1943eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        String mName;
1953eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams
1963eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        public void setName(String s) throws IllegalStateException, IllegalArgumentException
1973eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        {
1983eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            if(s.length() < 1) {
1993eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams                throw new IllegalArgumentException("setName does not accept a zero length string.");
2003eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            }
2013eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            if(mName != null) {
2023eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams                throw new IllegalArgumentException("setName object already has a name.");
2033eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            }
2043eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams
2053eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            try {
2063eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams                byte[] bytes = s.getBytes("UTF-8");
2073eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams                nAssignName(mID, bytes);
2083eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams                mName = s;
2093eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            } catch (java.io.UnsupportedEncodingException e) {
2103eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams                throw new RuntimeException(e);
2113eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            }
2123eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams        }
2133eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams
21460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        protected void finalize() throws Throwable
21560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        {
21660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            if (mID != 0) {
21743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                Log.v(LOG_TAG,
21860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich                      "Element finalized without having released the RS reference.");
21960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            }
22060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            super.finalize();
22160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
22260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
22360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
22443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
22560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
22660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Element
22760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
22860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum ElementPredefined {
22960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_U8 (0),
23060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_I8 (1),
23160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_U16 (2),
23260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_I16 (3),
23360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_U32 (4),
23460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_I32 (5),
23560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER_FLOAT (6),
23660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
237ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams        A_8                (7),
238ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams        RGB_565            (8),
2390826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        RGB_888            (11),
240ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams        RGBA_5551          (9),
241ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams        RGBA_4444          (10),
2420826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        RGBA_8888          (12),
243ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams
2440826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        INDEX_16           (13),
2450826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        INDEX_32           (14),
2460826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        XY_F32             (15),
2470826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        XYZ_F32            (16),
2480826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        ST_XY_F32          (17),
2490826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        ST_XYZ_F32         (18),
2500826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        NORM_XYZ_F32       (19),
2510826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        NORM_ST_XYZ_F32    (20);
25260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
25360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
25460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ElementPredefined(int id) {
25560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
25660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
25760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
25860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
25960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum DataType {
26060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        FLOAT (0),
26160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        UNSIGNED (1),
26260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SIGNED (2);
26360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
26460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
26560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DataType(int id) {
26660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
26760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
26860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
26960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
27060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum DataKind {
27160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        USER (0),
27260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        RED (1),
27360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GREEN (2),
27460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BLUE (3),
27560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ALPHA (4),
27660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LUMINANCE (5),
27760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        INTENSITY (6),
27860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        X (7),
27960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Y (8),
28060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Z (9),
28160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        W (10),
28260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        S (11),
28360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        T (12),
28460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Q (13),
28560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        R (14),
28660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NX (15),
28760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NY (16),
28860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NZ (17),
28960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        INDEX (18);
29060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
29160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
29260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DataKind(int id) {
29360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
29460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
29560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
29660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
29760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum DepthFunc {
29860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ALWAYS (0),
29960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LESS (1),
30060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LEQUAL (2),
30160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GREATER (3),
30260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        GEQUAL (4),
30360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        EQUAL (5),
30460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        NOTEQUAL (6);
30560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
30660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
30760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DepthFunc(int id) {
30860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
30960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
31060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
31160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
31260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum BlendSrcFunc {
31360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ZERO (0),
31460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE (1),
31560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_COLOR (2),
31660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_COLOR (3),
31760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA (4),
31860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_ALPHA (5),
31960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_ALPHA (6),
32060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_ALPA (7),
32160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA_SATURATE (8);
32260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
32360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
32460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BlendSrcFunc(int id) {
32560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
32660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
32760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
32860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
32960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum BlendDstFunc {
33060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ZERO (0),
33160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE (1),
33260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_COLOR (2),
33360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_COLOR (3),
33460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        SRC_ALPHA (4),
33560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_SRC_ALPHA (5),
33660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DST_ALPHA (6),
33760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ONE_MINUS_DST_ALPA (7);
33860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
33960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
34060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        BlendDstFunc(int id) {
34160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
34260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
34360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
34460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
34560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum EnvMode {
34660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        REPLACE (0),
34760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        MODULATE (1),
34860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        DECAL (2);
34960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
35060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
35160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        EnvMode(int id) {
35260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
35360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
35460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
35560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
35602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public enum SamplerParam {
35702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        FILTER_MIN (0),
35802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        FILTER_MAG (1),
35902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_S (2),
36002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_T (3),
36102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP_MODE_R (4);
36202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
36302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int mID;
36402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        SamplerParam(int id) {
36502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
36602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
36702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
36802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
36902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public enum SamplerValue {
37002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        NEAREST (0),
37102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        LINEAR (1),
37202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        LINEAR_MIP_LINEAR (2),
37302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        WRAP (3),
37402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        CLAMP (4);
37502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
37602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int mID;
37702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        SamplerValue(int id) {
37802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
37902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
38002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
38102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
38202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
38302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
38460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Element extends BaseObj {
38560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Element(int id) {
38660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
38760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
38860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
38960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void estroy() {
39060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nElementDestroy(mID);
39160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
39260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
39360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
39460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
39560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void elementBegin() {
39660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nElementBegin();
39760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
39860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
39960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void elementAddPredefined(ElementPredefined e) {
40060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nElementAddPredefined(e.mID);
40160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
40260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
40360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void elementAdd(DataType dt, DataKind dk, boolean isNormalized, int bits) {
40460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int norm = 0;
40560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (isNormalized) {
40660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            norm = 1;
40760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
40860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nElementAdd(dt.mID, dk.mID, norm, bits);
40960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
41060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
41160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Element elementCreate() {
41260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nElementCreate();
41360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Element(id);
41460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
41560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
41660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Element elementGetPredefined(ElementPredefined predef) {
41760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nElementGetPredefined(predef.mID);
41860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Element(id);
41960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
42060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
42160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
42260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
42360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Type
42460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
42560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public enum Dimension {
42660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        X (0),
42760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Y (1),
42860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Z (2),
42960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        LOD (3),
43060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        FACE (4),
43160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ARRAY_0 (100);
43260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
43360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int mID;
43460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Dimension(int id) {
43560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
43660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
43760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
43860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
43960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Type extends BaseObj {
44060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Type(int id) {
44160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
44260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
44360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
44460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
44560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nTypeDestroy(mID);
44660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
44760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
44860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
44960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void typeBegin(Element e) {
45160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTypeBegin(e.mID);
45260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
45360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void typeAdd(Dimension d, int value) {
45560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTypeAdd(d.mID, value);
45660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
45760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
45860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Type typeCreate() {
45960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nTypeCreate();
46060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Type(id);
46160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
46260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
46360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
46460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
46560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Allocation
46660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
46760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Allocation extends BaseObj {
46860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Allocation(int id) {
46960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
47060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
47160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
47260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void uploadToTexture(int baseMipLevel) {
47360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationUploadToTexture(mID, baseMipLevel);
47460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
47560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
47660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
47760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationDestroy(mID);
47860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
47960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
48060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
48160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(int[] d) {
48260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationData(mID, d);
48360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
48460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
48560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(float[] d) {
48660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationData(mID, d);
48760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
48860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
48960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData1D(int off, int count, int[] d) {
49060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData1D(mID, off, count, d);
49160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
49260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
49360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData1D(int off, int count, float[] d) {
49460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData1D(mID, off, count, d);
49560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
49660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
49760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
49860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
49960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
50060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
50160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
50260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAllocationSubData2D(mID, xoff, yoff, w, h, d);
50360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
50460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
50560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
50660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreateTyped(Type type) {
50760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAllocationCreateTyped(type.mID);
50860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
50960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
51060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
51160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreatePredefSized(ElementPredefined e, int count) {
51260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAllocationCreatePredefSized(e.mID, count);
51360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
51460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
51560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
51660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Allocation allocationCreateSized(Element e, int count) {
51760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAllocationCreateSized(e.mID, count);
51860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Allocation(id);
51960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
52060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
521fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams    public Allocation allocationCreateFromBitmap(Bitmap b, ElementPredefined dstFmt, boolean genMips) {
522ffe9f48890dde7173a0845d32887fdf94a49b0a7Jason Sams        int id = nAllocationCreateFromBitmap(dstFmt.mID, genMips, b);
523fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams        return new Allocation(id);
524fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams    }
52560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
52660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
52760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Adapter1D
52860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
52960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Adapter1D extends BaseObj {
53060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Adapter1D(int id) {
53160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
53260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
53360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
53460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
53560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DDestroy(mID);
53660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
53760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
53860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
53960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindAllocation(Allocation a) {
54060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DBindAllocation(mID, a.mID);
54160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
54260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
54360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void setConstraint(Dimension dim, int value) {
54460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSetConstraint(mID, dim.mID, value);
54560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
54660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
54760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(int[] d) {
54860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DData(mID, d);
54960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
55060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
55160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData(int off, int count, int[] d) {
55260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSubData(mID, off, count, d);
55360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
55460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
55560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void data(float[] d) {
55660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DData(mID, d);
55760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
55860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
55960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void subData(int off, int count, float[] d) {
56060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nAdapter1DSubData(mID, off, count, d);
56160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
56260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
56360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
56460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Adapter1D adapter1DCreate() {
56560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nAdapter1DCreate();
56660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Adapter1D(id);
56760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
56860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
56960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
57160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Triangle Mesh
57260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class TriangleMesh extends BaseObj {
57460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        TriangleMesh(int id) {
57560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
57660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
57760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
57860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
57960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nTriangleMeshDestroy(mID);
58060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
58160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
58260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
58360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
58460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshBegin(Element vertex, Element index) {
58560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshBegin(vertex.mID, index.mID);
58660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
58760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
58860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XY(float x, float y) {
58960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XY(x, y);
59060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
59160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
59260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XYZ(float x, float y, float z) {
59360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XYZ(x, y, z);
59460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
59560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
59660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) {
59760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XY_ST(x, y, s, t);
59860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
59960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
60060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) {
60160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t);
60260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
60360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
6040826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    public void triangleMeshAddVertex_XYZ_ST_NORM(float x, float y, float z, float s, float t, float nx, float ny, float nz) {
6050826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        nTriangleMeshAddVertex_XYZ_ST_NORM(x, y, z, s, t, nx, ny, nz);
6060826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    }
6070826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams
60860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void triangleMeshAddTriangle(int i1, int i2, int i3) {
60960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nTriangleMeshAddTriangle(i1, i2, i3);
61060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
61160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
61260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public TriangleMesh triangleMeshCreate() {
61360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nTriangleMeshCreate();
61460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new TriangleMesh(id);
61560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
61660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
61760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
61860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Script
61960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
62060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class Script extends BaseObj {
62160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        Script(int id) {
62260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
62360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
62460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
62560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
62660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptDestroy(mID);
62760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
62860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
62960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
63060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindAllocation(Allocation va, int slot) {
63160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nScriptBindAllocation(mID, va.mID, slot);
63260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
63360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
63460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
63560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCBegin() {
63660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCBegin();
63760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
63860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
63960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearColor(float r, float g, float b, float a) {
64060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearColor(r, g, b, a);
64160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
64260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
64360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearDepth(float d) {
64460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearDepth(d);
64560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
64660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
64760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetClearStencil(int stencil) {
64860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetClearStencil(stencil);
64960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
65060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
65160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCAddType(Type t) {
65260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCAddType(t.mID);
65360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
65460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
65560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetRoot(boolean r) {
65660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nScriptCSetRoot(r);
65760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
65860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
65960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void scriptCSetScript(String s) {
66043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        try {
66163975dde40e4ee8fd08225741b31d54eff115104Jack Palevich            byte[] bytes = s.getBytes("UTF-8");
66263975dde40e4ee8fd08225741b31d54eff115104Jack Palevich            nScriptCSetScript(bytes, 0, bytes.length);
66343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        } catch (java.io.UnsupportedEncodingException e) {
66443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            throw new RuntimeException(e);
66543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
66643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    }
66743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
66843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    public void scriptCSetScript(Resources resources, int id) {
66943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        InputStream is = resources.openRawResource(id);
67043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        try {
67143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            try {
67243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                scriptCSetScript(is);
67343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            } finally {
67443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                is.close();
67543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
67643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        } catch(IOException e) {
67743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            throw new Resources.NotFoundException();
67843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
67943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    }
68043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich
68143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich    public void  scriptCSetScript(InputStream is) throws IOException {
68243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        byte[] buf = new byte[1024];
68343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        int currentPos = 0;
68443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        while(true) {
68543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            int bytesLeft = buf.length - currentPos;
68643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            if (bytesLeft == 0) {
68743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                byte[] buf2 = new byte[buf.length * 2];
68843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                System.arraycopy(buf, 0, buf2, 0, buf.length);
68943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                buf = buf2;
69043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                bytesLeft = buf.length - currentPos;
69143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
69243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            int bytesRead = is.read(buf, currentPos, bytesLeft);
69343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            if (bytesRead <= 0) {
69443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich                break;
69543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            }
69643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich            currentPos += bytesRead;
69743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        }
69843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich        nScriptCSetScript(buf, 0, currentPos);
69960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
70060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
70160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public Script scriptCCreate() {
70260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nScriptCCreate();
70360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new Script(id);
70460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
70560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
70660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
7071fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    // ProgramVertex
7081fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7091fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public class ProgramVertex extends BaseObj {
7101fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        ProgramVertex(int id) {
7111fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            mID = id;
7121fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
7131fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7141fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        public void destroy() {
7151fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            nProgramVertexDestroy(mID);
7161fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            mID = 0;
7171fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
7181fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7191fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        public void bindAllocation(int slot, Allocation va) {
7201fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            nProgramVertexBindAllocation(mID, slot, va.mID);
7211fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
7221fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7231fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
7241fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7251fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public void programVertexBegin(Element in, Element out) {
7261fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        int inID = 0;
7271fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        int outID = 0;
7281fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        if (in != null) {
7291fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            inID = in.mID;
7301fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
7311fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        if (out != null) {
7321fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams            outID = out.mID;
7331fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        }
7341fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        nProgramVertexBegin(inID, outID);
7351fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
7361fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7371fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public void programVertexSetType(int slot, Type t) {
7381fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        nProgramVertexSetType(slot, t.mID);
7391fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
7401fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7411fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public void programVertexSetTextureMatrixEnable(boolean enable) {
7421fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        nProgramVertexSetTextureMatrixEnable(enable);
7431fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
7441fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7451fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    public ProgramVertex programVertexCreate() {
7461fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        int id = nProgramVertexCreate();
7471fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams        return new ProgramVertex(id);
7481fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    }
7491fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7501fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams
7511fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams    //////////////////////////////////////////////////////////////////////////////////
75260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // ProgramFragmentStore
75360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
75460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class ProgramFragmentStore extends BaseObj {
75560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ProgramFragmentStore(int id) {
75660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
75760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
75860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
75960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
7603eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            nProgramFragmentStoreDestroy(mID);
76160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
76260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
76360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
76460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
76560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreBegin(Element in, Element out) {
76660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int inID = 0;
76760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int outID = 0;
76860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (in != null) {
76960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            inID = in.mID;
77060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
77160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (out != null) {
77260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            outID = out.mID;
77360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
77460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreBegin(inID, outID);
77560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
77660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
77760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDepthFunc(DepthFunc func) {
77860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDepthFunc(func.mID);
77960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
78060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
78160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDepthMask(boolean enable) {
78260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDepthMask(enable);
78360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
78460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
78560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a) {
78660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreColorMask(r,g,b,a);
78760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
78860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
78960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreBlendFunc(BlendSrcFunc src, BlendDstFunc dst) {
79060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreBlendFunc(src.mID, dst.mID);
79160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
79260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
79360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentStoreDitherEnable(boolean enable) {
79460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentStoreDither(enable);
79560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
79660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
79760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public ProgramFragmentStore programFragmentStoreCreate() {
79860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nProgramFragmentStoreCreate();
79960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new ProgramFragmentStore(id);
80060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
80160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
80260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //////////////////////////////////////////////////////////////////////////////////
80360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // ProgramFragment
80460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
80560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public class ProgramFragment extends BaseObj {
80660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        ProgramFragment(int id) {
80760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = id;
80860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
80960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
81060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void destroy() {
8113eaa338e11a3b0d6b87d705e5bb95625e82347bdJason Sams            nProgramFragmentDestroy(mID);
81260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            mID = 0;
81360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
81460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
81560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        public void bindTexture(Allocation va, int slot) {
81660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            nProgramFragmentBindTexture(mID, slot, va.mID);
81760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
81860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
81902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        public void bindSampler(Sampler vs, int slot) {
82002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            nProgramFragmentBindSampler(mID, slot, vs.mID);
82102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
82260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
82360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
82460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentBegin(Element in, Element out) {
82560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int inID = 0;
82660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int outID = 0;
82760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (in != null) {
82860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            inID = in.mID;
82960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
83060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        if (out != null) {
83160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich            outID = out.mID;
83260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        }
83360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentBegin(inID, outID);
83460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
83560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
83660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetType(int slot, Type t) {
83760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetType(slot, t.mID);
83860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
83960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
84060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetType(int slot, EnvMode t) {
84160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetEnvMode(slot, t.mID);
84260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
84360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
84460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void programFragmentSetTexEnable(int slot, boolean enable) {
84560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nProgramFragmentSetTexEnable(slot, enable);
84660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
84760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
84860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public ProgramFragment programFragmentCreate() {
84960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        int id = nProgramFragmentCreate();
85060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        return new ProgramFragment(id);
85160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
85260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
85302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    //////////////////////////////////////////////////////////////////////////////////
85402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    // Sampler
85502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
85602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public class Sampler extends BaseObj {
85702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        Sampler(int id) {
85802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = id;
85902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
86002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
86102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        public void destroy() {
86202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            nSamplerDestroy(mID);
86302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams            mID = 0;
86402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        }
86502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
86602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
86702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public void samplerBegin() {
86802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        nSamplerBegin();
86902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
87002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
87102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public void samplerSet(SamplerParam p, SamplerValue v) {
87202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        nSamplerSet(p.mID, v.mID);
87302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
87402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
87502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    public Sampler samplerCreate() {
87602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        int id = nSamplerCreate();
87702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams        return new Sampler(id);
87802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams    }
87902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams
880bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    //////////////////////////////////////////////////////////////////////////////////
881bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    // Light
882bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
883bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public class Light extends BaseObj {
884bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        Light(int id) {
885bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            mID = id;
886bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
887bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
888bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        public void destroy() {
889bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            nLightDestroy(mID);
890bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            mID = 0;
891bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
892bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
893bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        public void setColor(float r, float g, float b) {
894bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            nLightSetColor(mID, r, g, b);
895bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
896bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
897bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        public void setPosition(float x, float y, float z) {
898bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams            nLightSetPosition(mID, x, y, z);
899bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        }
900bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
901bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
902bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public void lightBegin() {
903bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        nLightBegin();
904bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
905bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
906bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public void lightSetIsMono(boolean isMono) {
907bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        nLightSetIsMono(isMono);
908bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
909bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
910bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public void lightSetIsLocal(boolean isLocal) {
911bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        nLightSetIsLocal(isLocal);
912bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
913bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams
914bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    public Light lightCreate() {
915bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        int id = nLightCreate();
916bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams        return new Light(id);
917bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams    }
91860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
91960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    ///////////////////////////////////////////////////////////////////////////////////
92060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    // Root state
92160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
92260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindRootScript(Script s) {
92360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindRootScript(s.mID);
92460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
92560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
92660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //public void contextBindSampler(Sampler s, int slot) {
92760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        //nContextBindSampler(s.mID);
92860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    //}
92960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
93060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindProgramFragmentStore(ProgramFragmentStore pfs) {
93160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindProgramFragmentStore(pfs.mID);
93260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
93360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
93460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    public void contextBindProgramFragment(ProgramFragment pf) {
93560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich        nContextBindProgramFragment(pf.mID);
93660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    }
93760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
9380826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    public void contextBindProgramVertex(ProgramVertex pf) {
9390826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams        nContextBindProgramVertex(pf.mID);
9400826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams    }
9410826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams
94260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/*
94360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RsAdapter2D rsAdapter2DCreate ();
94460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DBindAllocation (RsAdapter2D adapt, RsAllocation alloc);
94560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DDestroy (RsAdapter2D adapter);
94660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DSetConstraint (RsAdapter2D adapter, RsDimension dim, uint32_t value);
94760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DData (RsAdapter2D adapter, const void * data);
94860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsAdapter2DSubData (RsAdapter2D adapter, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void * data);
94960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerBegin ();
95060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerSet (RsSamplerParam p, RsSamplerValue value);
95160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    RsSampler rsSamplerCreate ();
95260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich    void rsSamplerBind (RsSampler sampler, RsAllocation alloc);
95360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich*/
95460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
95560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich}
95660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich
957