RenderScript.java revision 02fb2cb531035779a25dbf9595e0628ea40585b0
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 17df98851d2fccc00d7bc9adfdf1088d34e007ae1aJack Palevichpackage com.android.fountain; 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); 7060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 7160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementBegin(); 7260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementAddPredefined(int predef); 7360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementAdd(int kind, int type, int norm, int bits); 7460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nElementCreate(); 7560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nElementGetPredefined(int predef); 7660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nElementDestroy(int obj); 7760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 7860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTypeBegin(int elementID); 7960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTypeAdd(int dim, int val); 8060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nTypeCreate(); 8160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTypeDestroy(int id); 8260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 8360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAllocationCreateTyped(int type); 8460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAllocationCreatePredefSized(int predef, int count); 8560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAllocationCreateSized(int elem, int count); 86fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams native private int nAllocationCreateFromBitmap(int w, int h, int dstFmt, int srcFmt, boolean genMips, int[] data); 87fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 8860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //native private int nAllocationCreateFromBitmap(type.mID); 8960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationUploadToTexture(int alloc, int baseMioLevel); 9060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationDestroy(int alloc); 9160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationData(int id, int[] d); 9260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationData(int id, float[] d); 9360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData1D(int id, int off, int count, int[] d); 9460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData1D(int id, int off, int count, float[] d); 9560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d); 9660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d); 9760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 9860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshDestroy(int id); 9960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshBegin(int vertex, int index); 10060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XY (float x, float y); 10160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XYZ (float x, float y, float z); 10260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t); 10360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t); 10460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nTriangleMeshAddTriangle(int i1, int i2, int i3); 10560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nTriangleMeshCreate(); 10660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 10760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DDestroy(int id); 10860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DBindAllocation(int ad, int alloc); 10960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DSetConstraint(int ad, int dim, int value); 11060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DData(int ad, int[] d); 11160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DSubData(int ad, int off, int count, int[] d); 11260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DData(int ad, float[] d); 11360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nAdapter1DSubData(int ad, int off, int count, float[] d); 11460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nAdapter1DCreate(); 11560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 11660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptDestroy(int script); 11760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptBindAllocation(int vtm, int alloc, int slot); 11860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCBegin(); 11960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetClearColor(float r, float g, float b, float a); 12060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetClearDepth(float depth); 12160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetClearStencil(int stencil); 12260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCAddType(int type); 12360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nScriptCSetRoot(boolean isRoot); 12443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich native private void nScriptCSetScript(byte[] script, int offset, int length); 12560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nScriptCCreate(); 12660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 12702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams native private void nSamplerDestroy(int sampler); 12802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams native private void nSamplerBegin(); 12902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams native private void nSamplerSet(int param, int value); 13002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams native private int nSamplerCreate(); 13160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 13260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreBegin(int in, int out); 13360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreDepthFunc(int func); 13460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreDepthMask(boolean enable); 13560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a); 13660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreBlendFunc(int src, int dst); 13760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentStoreDither(boolean enable); 13860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nProgramFragmentStoreCreate(); 13960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 14060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentBegin(int in, int out); 14160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentBindTexture(int vpf, int slot, int a); 14260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentBindSampler(int vpf, int slot, int s); 14360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentSetType(int slot, int vt); 14460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentSetEnvMode(int slot, int env); 14560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private void nProgramFragmentSetTexEnable(int slot, boolean enable); 14660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private int nProgramFragmentCreate(); 14760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 14860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 14960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mDev; 15060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mContext; 15160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private Surface mSurface; 15260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 15643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich // 15760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 15860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RenderScript(Surface sur) { 15960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mSurface = sur; 16060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mDev = nDeviceCreate(); 16160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mContext = nContextCreate(mDev, mSurface, 0); 16260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 16360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 16460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private class BaseObj { 16560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BaseObj() { 16660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 16760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 16860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 16960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 17060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich protected void finalize() throws Throwable 17160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich { 17260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (mID != 0) { 17343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich Log.v(LOG_TAG, 17460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich "Element finalized without having released the RS reference."); 17560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 17660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich super.finalize(); 17760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 17860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 17960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 18043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 18160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 18260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Element 18360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 18460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum ElementPredefined { 18560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_U8 (0), 18660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_I8 (1), 18760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_U16 (2), 18860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_I16 (3), 18960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_U32 (4), 19060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_I32 (5), 19160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER_FLOAT (6), 19260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 193fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams A_8 (7), 194fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGB_565 (8), 195fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGBA_5551 (9), 196fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGBA_4444 (10), 197fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGB_888 (11), 198fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams RGBA_8888 (12), 199fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 200fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams INDEX_16 (13), 201fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams INDEX_32 (14), 202fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams XY_F32 (15), 203fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams XYZ_F32 (16), 204fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams ST_XY_F32 (17), 205fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams ST_XYZ_F32 (18), 206fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams NORM_XYZ_F32 (19), 207fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams NORM_ST_XYZ_F32 (20); 20860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 20960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 21060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ElementPredefined(int id) { 21160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 21260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 21360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 21460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 21560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum DataType { 21660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich FLOAT (0), 21760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich UNSIGNED (1), 21860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SIGNED (2); 21960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 22060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 22160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DataType(int id) { 22260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 22360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 22460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 22560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 22660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum DataKind { 22760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich USER (0), 22860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RED (1), 22960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich GREEN (2), 23060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BLUE (3), 23160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ALPHA (4), 23260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LUMINANCE (5), 23360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich INTENSITY (6), 23460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich X (7), 23560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Y (8), 23660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Z (9), 23760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich W (10), 23860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich S (11), 23960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich T (12), 24060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Q (13), 24160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich R (14), 24260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NX (15), 24360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NY (16), 24460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NZ (17), 24560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich INDEX (18); 24660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 24760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 24860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DataKind(int id) { 24960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 25060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 25160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 25260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 25360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum DepthFunc { 25460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ALWAYS (0), 25560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LESS (1), 25660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LEQUAL (2), 25760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich GREATER (3), 25860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich GEQUAL (4), 25960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich EQUAL (5), 26060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich NOTEQUAL (6); 26160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 26260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 26360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DepthFunc(int id) { 26460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 26560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 26660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 26760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 26860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum BlendSrcFunc { 26960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ZERO (0), 27060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE (1), 27160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DST_COLOR (2), 27260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_DST_COLOR (3), 27360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_ALPHA (4), 27460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_SRC_ALPHA (5), 27560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DST_ALPHA (6), 27660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_DST_ALPA (7), 27760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_ALPHA_SATURATE (8); 27860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 27960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 28060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BlendSrcFunc(int id) { 28160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 28260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 28360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 28460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 28560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum BlendDstFunc { 28660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ZERO (0), 28760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE (1), 28860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_COLOR (2), 28960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_SRC_COLOR (3), 29060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich SRC_ALPHA (4), 29160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_SRC_ALPHA (5), 29260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DST_ALPHA (6), 29360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ONE_MINUS_DST_ALPA (7); 29460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 29560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 29660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich BlendDstFunc(int id) { 29760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 29860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 29960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 30060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 30160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum EnvMode { 30260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich REPLACE (0), 30360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich MODULATE (1), 30460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich DECAL (2); 30560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 30660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 30760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich EnvMode(int id) { 30860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 30960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 31060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 31160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 31202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public enum SamplerParam { 31302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams FILTER_MIN (0), 31402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams FILTER_MAG (1), 31502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP_MODE_S (2), 31602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP_MODE_T (3), 31702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP_MODE_R (4); 31802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 31902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams int mID; 32002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams SamplerParam(int id) { 32102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = id; 32202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 32302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 32402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 32502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public enum SamplerValue { 32602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams NEAREST (0), 32702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LINEAR (1), 32802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LINEAR_MIP_LINEAR (2), 32902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP (3), 33002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams CLAMP (4); 33102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 33202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams int mID; 33302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams SamplerValue(int id) { 33402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = id; 33502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 33602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 33702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 33802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 33902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 34060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Element extends BaseObj { 34160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Element(int id) { 34260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 34360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 34460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 34560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void estroy() { 34660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementDestroy(mID); 34760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 34860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 34960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 35060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 35160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void elementBegin() { 35260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementBegin(); 35360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 35460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 35560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void elementAddPredefined(ElementPredefined e) { 35660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementAddPredefined(e.mID); 35760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 35860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 35960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void elementAdd(DataType dt, DataKind dk, boolean isNormalized, int bits) { 36060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int norm = 0; 36160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (isNormalized) { 36260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich norm = 1; 36360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 36460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nElementAdd(dt.mID, dk.mID, norm, bits); 36560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 36660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 36760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Element elementCreate() { 36860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nElementCreate(); 36960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Element(id); 37060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 37160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 37260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Element elementGetPredefined(ElementPredefined predef) { 37360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nElementGetPredefined(predef.mID); 37460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Element(id); 37560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 37660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 37760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 37860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 37960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Type 38060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 38160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public enum Dimension { 38260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich X (0), 38360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Y (1), 38460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Z (2), 38560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich LOD (3), 38660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich FACE (4), 38760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ARRAY_0 (100); 38860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 38960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int mID; 39060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Dimension(int id) { 39160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 39260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 39360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 39460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 39560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Type extends BaseObj { 39660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Type(int id) { 39760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 39860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 39960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 40060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 40160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTypeDestroy(mID); 40260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 40360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 40460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 40560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 40660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void typeBegin(Element e) { 40760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTypeBegin(e.mID); 40860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 40960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 41060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void typeAdd(Dimension d, int value) { 41160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTypeAdd(d.mID, value); 41260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 41360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 41460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Type typeCreate() { 41560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nTypeCreate(); 41660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Type(id); 41760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 41860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 41960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 42060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 42160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Allocation 42260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 42360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Allocation extends BaseObj { 42460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Allocation(int id) { 42560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 42660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 42760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 42860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void uploadToTexture(int baseMipLevel) { 42960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationUploadToTexture(mID, baseMipLevel); 43060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 43160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 43260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 43360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationDestroy(mID); 43460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 43560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 43660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 43760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(int[] d) { 43860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationData(mID, d); 43960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 44060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 44160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(float[] d) { 44260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationData(mID, d); 44360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 44460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 44560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData1D(int off, int count, int[] d) { 44660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData1D(mID, off, count, d); 44760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 44860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 44960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData1D(int off, int count, float[] d) { 45060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData1D(mID, off, count, d); 45160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 45260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 45360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData2D(int xoff, int yoff, int w, int h, int[] d) { 45460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData2D(mID, xoff, yoff, w, h, d); 45560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 45660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 45760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData2D(int xoff, int yoff, int w, int h, float[] d) { 45860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAllocationSubData2D(mID, xoff, yoff, w, h, d); 45960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 46060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 46160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 46260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Allocation allocationCreateTyped(Type type) { 46360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAllocationCreateTyped(type.mID); 46460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Allocation(id); 46560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 46660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 46760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Allocation allocationCreatePredefSized(ElementPredefined e, int count) { 46860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAllocationCreatePredefSized(e.mID, count); 46960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Allocation(id); 47060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 47160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 47260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Allocation allocationCreateSized(Element e, int count) { 47360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAllocationCreateSized(e.mID, count); 47460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Allocation(id); 47560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 47660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 477fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams public Allocation allocationCreateFromBitmap(Bitmap b, ElementPredefined dstFmt, boolean genMips) { 478fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int w = b.getWidth(); 479fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int h = b.getHeight(); 480fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int[] data = new int[w * h]; 481fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 482fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int outPtr = 0; 483fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams for(int y=0; y < h; y++) { 484fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams for(int x=0; x < w; x++) { 485fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams data[outPtr] = b.getPixel(x, y); 486fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams outPtr++; 487fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams } 488fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams } 489fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 490fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int srcFmt = 0; 491fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams /* 492fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams switch(b.getConfig()) { 493fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case ALPHA_8: 494fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.A_8.mID; 495fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 496fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case ARGB_4444: 497fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGBA_4444.mID; 498fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 499fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case ARGB_8888: 500fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGBA_8888.mID; 501fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 502fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams case RGB_565: 503fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGB_565.mID; 504fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams break; 505fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams default: 506fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams Log.e(LOG_TAG, "allocationCreateFromBitmap, unknown bitmap format"); 50743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 50843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich */ 509fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 510fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams srcFmt = ElementPredefined.RGBA_8888.mID; 511fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams 512fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams int id = nAllocationCreateFromBitmap(w, h, dstFmt.mID, srcFmt, genMips, data); 513fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams return new Allocation(id); 514fe08d99725efd0dde7ba67ff1979a04fec2ba99fJason Sams } 51560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 51660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 51760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Adapter1D 51860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 51960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Adapter1D extends BaseObj { 52060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Adapter1D(int id) { 52160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 52260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 52360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 52460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 52560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DDestroy(mID); 52660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 52760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 52860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 52960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void bindAllocation(Allocation a) { 53060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DBindAllocation(mID, a.mID); 53160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 53260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 53360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void setConstraint(Dimension dim, int value) { 53460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DSetConstraint(mID, dim.mID, value); 53560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 53660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 53760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(int[] d) { 53860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DData(mID, d); 53960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 54060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 54160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData(int off, int count, int[] d) { 54260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DSubData(mID, off, count, d); 54360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 54460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 54560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void data(float[] d) { 54660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DData(mID, d); 54760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 54860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 54960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void subData(int off, int count, float[] d) { 55060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nAdapter1DSubData(mID, off, count, d); 55160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 55260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 55360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 55460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Adapter1D adapter1DCreate() { 55560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nAdapter1DCreate(); 55660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Adapter1D(id); 55760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 55860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 55960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 56060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 56160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Triangle Mesh 56260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 56360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class TriangleMesh extends BaseObj { 56460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich TriangleMesh(int id) { 56560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 56660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 56760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 56860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 56960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshDestroy(mID); 57060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 57160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 57260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 57360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 57460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshBegin(Element vertex, Element index) { 57560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshBegin(vertex.mID, index.mID); 57660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 57760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 57860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY(float x, float y) { 57960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY(x, y); 58060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 58160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 58260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ(float x, float y, float z) { 58360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ(x, y, z); 58460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 58560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 58660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) { 58760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY_ST(x, y, s, t); 58860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 58960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 59060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) { 59160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t); 59260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 59360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 59460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddTriangle(int i1, int i2, int i3) { 59560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddTriangle(i1, i2, i3); 59660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 59760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 59860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public TriangleMesh triangleMeshCreate() { 59960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nTriangleMeshCreate(); 60060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new TriangleMesh(id); 60160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 60260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 60360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 60460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Script 60560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 60660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class Script extends BaseObj { 60760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich Script(int id) { 60860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 60960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 61060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 61160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 61260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptDestroy(mID); 61360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 61460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 61560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 61660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void bindAllocation(Allocation va, int slot) { 61760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptBindAllocation(mID, va.mID, slot); 61860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 61960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 62060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 62160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCBegin() { 62260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCBegin(); 62360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 62460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 62560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetClearColor(float r, float g, float b, float a) { 62660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetClearColor(r, g, b, a); 62760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 62860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 62960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetClearDepth(float d) { 63060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetClearDepth(d); 63160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 63260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 63360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetClearStencil(int stencil) { 63460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetClearStencil(stencil); 63560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 63660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 63760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCAddType(Type t) { 63860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCAddType(t.mID); 63960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 64060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 64160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetRoot(boolean r) { 64260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptCSetRoot(r); 64360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 64460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 64560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void scriptCSetScript(String s) { 64643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich try { 64763975dde40e4ee8fd08225741b31d54eff115104Jack Palevich byte[] bytes = s.getBytes("UTF-8"); 64863975dde40e4ee8fd08225741b31d54eff115104Jack Palevich nScriptCSetScript(bytes, 0, bytes.length); 64943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } catch (java.io.UnsupportedEncodingException e) { 65043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich throw new RuntimeException(e); 65143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 65243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 65343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 65443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich public void scriptCSetScript(Resources resources, int id) { 65543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich InputStream is = resources.openRawResource(id); 65643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich try { 65743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich try { 65843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich scriptCSetScript(is); 65943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } finally { 66043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich is.close(); 66143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 66243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } catch(IOException e) { 66343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich throw new Resources.NotFoundException(); 66443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 66543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 66643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 66743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich public void scriptCSetScript(InputStream is) throws IOException { 66843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich byte[] buf = new byte[1024]; 66943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich int currentPos = 0; 67043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich while(true) { 67143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich int bytesLeft = buf.length - currentPos; 67243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (bytesLeft == 0) { 67343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich byte[] buf2 = new byte[buf.length * 2]; 67443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich System.arraycopy(buf, 0, buf2, 0, buf.length); 67543702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich buf = buf2; 67643702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich bytesLeft = buf.length - currentPos; 67743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 67843702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich int bytesRead = is.read(buf, currentPos, bytesLeft); 67943702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich if (bytesRead <= 0) { 68043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich break; 68143702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 68243702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich currentPos += bytesRead; 68343702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich } 68443702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich nScriptCSetScript(buf, 0, currentPos); 68560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 68660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 68760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public Script scriptCCreate() { 68860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nScriptCCreate(); 68960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new Script(id); 69060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 69160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 69260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 69360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // ProgramFragmentStore 69460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 69560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class ProgramFragmentStore extends BaseObj { 69660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ProgramFragmentStore(int id) { 69760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 69860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 69960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 70060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 70160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptDestroy(mID); 70260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 70360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 70460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 70560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 70660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreBegin(Element in, Element out) { 70760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int inID = 0; 70860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int outID = 0; 70960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (in != null) { 71060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich inID = in.mID; 71160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 71260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich if (out != null) { 71360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich outID = out.mID; 71460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 71560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreBegin(inID, outID); 71660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 71760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 71860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreDepthFunc(DepthFunc func) { 71960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreDepthFunc(func.mID); 72060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 72160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 72260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreDepthMask(boolean enable) { 72360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreDepthMask(enable); 72460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 72560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 72660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a) { 72760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreColorMask(r,g,b,a); 72860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 72960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 73060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreBlendFunc(BlendSrcFunc src, BlendDstFunc dst) { 73160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreBlendFunc(src.mID, dst.mID); 73260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 73360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 73460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentStoreDitherEnable(boolean enable) { 73560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentStoreDither(enable); 73660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 73760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 73860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public ProgramFragmentStore programFragmentStoreCreate() { 73960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nProgramFragmentStoreCreate(); 74060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new ProgramFragmentStore(id); 74160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 74260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 74360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 74460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // ProgramFragment 74560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 74660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class ProgramFragment extends BaseObj { 74760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ProgramFragment(int id) { 74860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 74960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 75060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 75160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 75260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nScriptDestroy(mID); 75360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 75460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 75560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 75660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void bindTexture(Allocation va, int slot) { 75760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentBindTexture(mID, slot, va.mID); 75860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 75960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 76002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public void bindSampler(Sampler vs, int slot) { 76102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams nProgramFragmentBindSampler(mID, slot, vs.mID); 76202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 76360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 76460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 76560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentBegin(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 nProgramFragmentBegin(inID, outID); 77560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 77660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 77760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentSetType(int slot, Type t) { 77860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentSetType(slot, t.mID); 77960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 78060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 78160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentSetType(int slot, EnvMode t) { 78260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentSetEnvMode(slot, t.mID); 78360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 78460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 78560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void programFragmentSetTexEnable(int slot, boolean enable) { 78660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nProgramFragmentSetTexEnable(slot, enable); 78760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 78860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 78960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public ProgramFragment programFragmentCreate() { 79060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nProgramFragmentCreate(); 79160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new ProgramFragment(id); 79260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 79360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 79402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams ////////////////////////////////////////////////////////////////////////////////// 79502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams // Sampler 79602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 79702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public class Sampler extends BaseObj { 79802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams Sampler(int id) { 79902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = id; 80002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 80102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 80202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public void destroy() { 80302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams nSamplerDestroy(mID); 80402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = 0; 80502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 80602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 80702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 80802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public void samplerBegin() { 80902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams nSamplerBegin(); 81002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 81102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 81202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public void samplerSet(SamplerParam p, SamplerValue v) { 81302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams nSamplerSet(p.mID, v.mID); 81402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 81502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 81602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public Sampler samplerCreate() { 81702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams int id = nSamplerCreate(); 81802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams return new Sampler(id); 81902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 82002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 82160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 82260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 82360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Root state 82460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 82560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindRootScript(Script s) { 82660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindRootScript(s.mID); 82760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 82860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 82960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //public void contextBindSampler(Sampler s, int slot) { 83060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //nContextBindSampler(s.mID); 83160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //} 83260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 83360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindProgramFragmentStore(ProgramFragmentStore pfs) { 83460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragmentStore(pfs.mID); 83560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 83660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 83760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindProgramFragment(ProgramFragment pf) { 83860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragment(pf.mID); 83960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 84060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 84160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich/* 84260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RsAdapter2D rsAdapter2DCreate (); 84360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DBindAllocation (RsAdapter2D adapt, RsAllocation alloc); 84460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DDestroy (RsAdapter2D adapter); 84560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DSetConstraint (RsAdapter2D adapter, RsDimension dim, uint32_t value); 84660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DData (RsAdapter2D adapter, const void * data); 84760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsAdapter2DSubData (RsAdapter2D adapter, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void * data); 84860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsSamplerBegin (); 84960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsSamplerSet (RsSamplerParam p, RsSamplerValue value); 85060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RsSampler rsSamplerCreate (); 85160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich void rsSamplerBind (RsSampler sampler, RsAllocation alloc); 85260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich*/ 85360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 85460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich} 85560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 856