RenderScript.java revision 22534176fb5c1257130ef4ee589739ca42766a32
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.IOException; 2036e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport java.io.InputStream; 2136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 2236e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.content.res.Resources; 23b8c5a84e7c23746a3fc26013e0880d3d95ca6588Jason Samsimport android.graphics.Bitmap; 2436e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Config; 2536e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.util.Log; 2636e612a488511940b61f09803b270aa1c61b68e0Jason Samsimport android.view.Surface; 2743702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich 2860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 29e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams/** 30e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams * @hide 31e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams * 32e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams **/ 3360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevichpublic class RenderScript { 34f29ca50d80e3dc379de1642e85b7963175b2ca38Jason Sams static final String LOG_TAG = "libRS_jni"; 3560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private static final boolean DEBUG = false; 3660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private static final boolean LOG_ENABLED = DEBUG ? Config.LOGD : Config.LOGV; 3760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 3860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 3960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams /* 4160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * We use a class initializer to allow the native code to cache some 4260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich * field offsets. 4360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich */ 4460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private static boolean sInitialized; 4560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich native private static void _nInit(); 4660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 47dba3ba5b5bf6026abceced921b1b0d231b0faefdJason Sams 4860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich static { 4960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich sInitialized = false; 5060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich try { 51e29d471e5ca9781d8772d445ec7832e94856fd14Jason Sams 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 5936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nDeviceCreate(); 6036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nDeviceDestroy(int dev); 6136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nContextCreate(int dev, Surface sur, int ver); 6236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextDestroy(int con); 6360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 6460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //void rsContextBindSampler (uint32_t slot, RsSampler sampler); 6560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //void rsContextBindRootScript (RsScript sampler); 6636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindRootScript(int script); 6736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindSampler(int sampler, int slot); 6836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindProgramFragmentStore(int pfs); 6936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindProgramFragment(int pf); 7036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nContextBindProgramVertex(int pf); 7136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 7236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAssignName(int obj, byte[] name); 7336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nFileOpen(byte[] name); 7436e612a488511940b61f09803b270aa1c61b68e0Jason Sams 7536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nElementBegin(); 7636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nElementAddPredefined(int predef); 7736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nElementAdd(int kind, int type, int norm, int bits); 7836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nElementCreate(); 7936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nElementGetPredefined(int predef); 8036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nElementDestroy(int obj); 8136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 8236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTypeBegin(int elementID); 8336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTypeAdd(int dim, int val); 8436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nTypeCreate(); 8536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTypeDestroy(int id); 8636e612a488511940b61f09803b270aa1c61b68e0Jason Sams 8736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateTyped(int type); 8836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreatePredefSized(int predef, int count); 8936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateSized(int elem, int count); 9036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateFromBitmap(int dstFmt, boolean genMips, Bitmap bmp); 9136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAllocationCreateFromBitmapBoxed(int dstFmt, boolean genMips, Bitmap bmp); 9236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 9336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationUploadToTexture(int alloc, int baseMioLevel); 9436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationDestroy(int alloc); 9536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationData(int id, int[] d); 9636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationData(int id, float[] d); 9736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData1D(int id, int off, int count, int[] d); 9836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData1D(int id, int off, int count, float[] d); 9936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d); 10036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d); 10136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 10236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshDestroy(int id); 10336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshBegin(int vertex, int index); 10436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XY (float x, float y); 10536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XYZ (float x, float y, float z); 10636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XY_ST (float x, float y, float s, float t); 10736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XYZ_ST (float x, float y, float z, float s, float t); 10836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddVertex_XYZ_ST_NORM (float x, float y, float z, float s, float t, float nx, float ny, float nz); 10936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nTriangleMeshAddTriangle(int i1, int i2, int i3); 11036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nTriangleMeshCreate(); 11136e612a488511940b61f09803b270aa1c61b68e0Jason Sams 11236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DDestroy(int id); 11336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DBindAllocation(int ad, int alloc); 11436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DSetConstraint(int ad, int dim, int value); 11536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DData(int ad, int[] d); 11636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DData(int ad, float[] d); 117bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter1DSubData(int ad, int off, int count, int[] d); 11836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nAdapter1DSubData(int ad, int off, int count, float[] d); 11936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nAdapter1DCreate(); 12036e612a488511940b61f09803b270aa1c61b68e0Jason Sams 121bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DDestroy(int id); 122bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DBindAllocation(int ad, int alloc); 123bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DSetConstraint(int ad, int dim, int value); 124bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DData(int ad, int[] d); 125bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DData(int ad, float[] d); 126bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, int[] d); 127bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native void nAdapter2DSubData(int ad, int xoff, int yoff, int w, int h, float[] d); 128bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams native int nAdapter2DCreate(); 129bd1c3ad0cdf8e60b849a009cdc0b36764cc1dacbJason Sams 13036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nScriptDestroy(int script); 13122534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptBindAllocation(int script, int alloc, int slot); 13222534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetClearColor(int script, float r, float g, float b, float a); 13322534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetClearDepth(int script, float depth); 13422534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetClearStencil(int script, int stencil); 13522534176fb5c1257130ef4ee589739ca42766a32Jason Sams native void nScriptSetTimeZone(int script, byte[] timeZone); 13622534176fb5c1257130ef4ee589739ca42766a32Jason Sams 13736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nScriptCBegin(); 13836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nScriptCAddType(int type); 13936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nScriptCSetRoot(boolean isRoot); 14036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nScriptCSetScript(byte[] script, int offset, int length); 14136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nScriptCCreate(); 14236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 14336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nSamplerDestroy(int sampler); 14436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nSamplerBegin(); 14536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nSamplerSet(int param, int value); 14636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nSamplerCreate(); 14736e612a488511940b61f09803b270aa1c61b68e0Jason Sams 14836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreBegin(int in, int out); 14936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreDepthFunc(int func); 15036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreDepthMask(boolean enable); 15136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreColorMask(boolean r, boolean g, boolean b, boolean a); 15236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreBlendFunc(int src, int dst); 15336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreDither(boolean enable); 15436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nProgramFragmentStoreCreate(); 15536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentStoreDestroy(int pgm); 15636e612a488511940b61f09803b270aa1c61b68e0Jason Sams 15736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentBegin(int in, int out); 15836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentBindTexture(int vpf, int slot, int a); 15936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentBindSampler(int vpf, int slot, int s); 16036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentSetType(int slot, int vt); 16136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentSetEnvMode(int slot, int env); 16236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentSetTexEnable(int slot, boolean enable); 16336e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nProgramFragmentCreate(); 16436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramFragmentDestroy(int pgm); 16536e612a488511940b61f09803b270aa1c61b68e0Jason Sams 16636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexDestroy(int pv); 16736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexBindAllocation(int pv, int slot, int mID); 16836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexBegin(int inID, int outID); 16936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexSetType(int slot, int mID); 17036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexSetTextureMatrixEnable(boolean enable); 17136e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nProgramVertexAddLight(int id); 17236e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nProgramVertexCreate(); 17336e612a488511940b61f09803b270aa1c61b68e0Jason Sams 17436e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightBegin(); 17536e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetIsMono(boolean isMono); 17636e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetIsLocal(boolean isLocal); 17736e612a488511940b61f09803b270aa1c61b68e0Jason Sams native int nLightCreate(); 17836e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightDestroy(int l); 17936e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetColor(int l, float r, float g, float b); 18036e612a488511940b61f09803b270aa1c61b68e0Jason Sams native void nLightSetPosition(int l, float x, float y, float z); 181bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 18260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 18360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mDev; 18460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private int mContext; 18560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich private Surface mSurface; 18660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 18736e612a488511940b61f09803b270aa1c61b68e0Jason Sams private static boolean mElementsInitialized = false; 18860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 18960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 19043702d8925c54360ad5f9f66b0d35d61d59f6910Jack Palevich // 19160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 19260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich RenderScript(Surface sur) { 19360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mSurface = sur; 19460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mDev = nDeviceCreate(); 19560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mContext = nContextCreate(mDev, mSurface, 0); 19660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 19736e612a488511940b61f09803b270aa1c61b68e0Jason Sams // TODO: This should be protected by a lock 19836e612a488511940b61f09803b270aa1c61b68e0Jason Sams if(!mElementsInitialized) { 19936e612a488511940b61f09803b270aa1c61b68e0Jason Sams Element.init(this); 20036e612a488511940b61f09803b270aa1c61b68e0Jason Sams mElementsInitialized = true; 20160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 20260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 20360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 20460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 20560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Element 20660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 20760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 20802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public enum SamplerParam { 20902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams FILTER_MIN (0), 21002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams FILTER_MAG (1), 21102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP_MODE_S (2), 21202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP_MODE_T (3), 21302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP_MODE_R (4); 21402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 21502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams int mID; 21602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams SamplerParam(int id) { 21702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = id; 21802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 21902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 22002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 22102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public enum SamplerValue { 22202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams NEAREST (0), 22302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LINEAR (1), 22402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams LINEAR_MIP_LINEAR (2), 22502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams WRAP (3), 22602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams CLAMP (4); 22702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 22802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams int mID; 22902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams SamplerValue(int id) { 23002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = id; 23102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 23202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 23302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 23460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 23560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Triangle Mesh 23660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 23760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public class TriangleMesh extends BaseObj { 23860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich TriangleMesh(int id) { 23936e612a488511940b61f09803b270aa1c61b68e0Jason Sams super(RenderScript.this); 24060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = id; 24160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 24260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 24360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void destroy() { 24460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshDestroy(mID); 24560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich mID = 0; 24660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 24760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 24860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 24960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshBegin(Element vertex, Element index) { 25036e612a488511940b61f09803b270aa1c61b68e0Jason Sams Log.e("rs", "vtx " + vertex.toString() + " " + vertex.mID + " " + vertex.mPredefinedID); 25160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshBegin(vertex.mID, index.mID); 25260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 25360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 25460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY(float x, float y) { 25560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY(x, y); 25660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 25760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 25860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ(float x, float y, float z) { 25960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ(x, y, z); 26060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 26160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 26260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XY_ST(float x, float y, float s, float t) { 26360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XY_ST(x, y, s, t); 26460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 26560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 26660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddVertex_XYZ_ST(float x, float y, float z, float s, float t) { 26760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddVertex_XYZ_ST(x, y, z, s, t); 26860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 26960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 2700826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams public void triangleMeshAddVertex_XYZ_ST_NORM(float x, float y, float z, float s, float t, float nx, float ny, float nz) { 2710826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams nTriangleMeshAddVertex_XYZ_ST_NORM(x, y, z, s, t, nx, ny, nz); 2720826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams } 2730826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 27460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void triangleMeshAddTriangle(int i1, int i2, int i3) { 27560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nTriangleMeshAddTriangle(i1, i2, i3); 27660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 27760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 27860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public TriangleMesh triangleMeshCreate() { 27960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich int id = nTriangleMeshCreate(); 28060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich return new TriangleMesh(id); 28160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 28260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 28360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 2841fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams // ProgramVertex 2851fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 2861fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams public class ProgramVertex extends BaseObj { 2871fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams ProgramVertex(int id) { 28836e612a488511940b61f09803b270aa1c61b68e0Jason Sams super(RenderScript.this); 2891fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams mID = id; 2901fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 2911fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 2921fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams public void destroy() { 2931fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams nProgramVertexDestroy(mID); 2941fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams mID = 0; 2951fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 2961fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 2971fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams public void bindAllocation(int slot, Allocation va) { 2981fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams nProgramVertexBindAllocation(mID, slot, va.mID); 2991fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3001fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3011fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 3021fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams public void programVertexBegin(Element in, Element out) { 3031fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams int inID = 0; 3041fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams int outID = 0; 3051fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams if (in != null) { 3061fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams inID = in.mID; 3071fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3081fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams if (out != null) { 3091fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams outID = out.mID; 3101fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3111fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams nProgramVertexBegin(inID, outID); 3121fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3131fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 3141fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams public void programVertexSetType(int slot, Type t) { 3151fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams nProgramVertexSetType(slot, t.mID); 3161fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3171fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 3181fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams public void programVertexSetTextureMatrixEnable(boolean enable) { 3191fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams nProgramVertexSetTextureMatrixEnable(enable); 3201fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3211fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 322ee41112e1539de95596600fd2c6dada5d275217fJason Sams public void programVertexAddLight(Light l) { 323ee41112e1539de95596600fd2c6dada5d275217fJason Sams nProgramVertexAddLight(l.mID); 324ee41112e1539de95596600fd2c6dada5d275217fJason Sams } 325ee41112e1539de95596600fd2c6dada5d275217fJason Sams 3261fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams public ProgramVertex programVertexCreate() { 3271fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams int id = nProgramVertexCreate(); 3281fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams return new ProgramVertex(id); 3291fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams } 3301fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 3311fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams 3321fe9b8c3bdc55e624edc1a69c3f3f0b9e90af1e4Jason Sams ////////////////////////////////////////////////////////////////////////////////// 33360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // ProgramFragmentStore 33460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 33560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich ////////////////////////////////////////////////////////////////////////////////// 33660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // ProgramFragment 33760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 33802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams ////////////////////////////////////////////////////////////////////////////////// 33902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams // Sampler 34002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 34102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public class Sampler extends BaseObj { 34202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams Sampler(int id) { 34336e612a488511940b61f09803b270aa1c61b68e0Jason Sams super(RenderScript.this); 34402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = id; 34502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 34602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 34702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public void destroy() { 34802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams nSamplerDestroy(mID); 34902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams mID = 0; 35002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 35102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 35202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 35302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public void samplerBegin() { 35402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams nSamplerBegin(); 35502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 35602fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 35702fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public void samplerSet(SamplerParam p, SamplerValue v) { 35802fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams nSamplerSet(p.mID, v.mID); 35902fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 36002fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 36102fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams public Sampler samplerCreate() { 36202fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams int id = nSamplerCreate(); 36302fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams return new Sampler(id); 36402fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams } 36502fb2cb531035779a25dbf9595e0628ea40585b0Jason Sams 366bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams ////////////////////////////////////////////////////////////////////////////////// 367bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams // Light 368bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 369bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public class Light extends BaseObj { 370bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams Light(int id) { 37136e612a488511940b61f09803b270aa1c61b68e0Jason Sams super(RenderScript.this); 372bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams mID = id; 373bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 374bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 375bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public void destroy() { 376bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams nLightDestroy(mID); 377bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams mID = 0; 378bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 379bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 380bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public void setColor(float r, float g, float b) { 381bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams nLightSetColor(mID, r, g, b); 382bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 383bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 384bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public void setPosition(float x, float y, float z) { 385bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams nLightSetPosition(mID, x, y, z); 386bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 387bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 388bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 389bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public void lightBegin() { 390bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams nLightBegin(); 391bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 392bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 393bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public void lightSetIsMono(boolean isMono) { 394bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams nLightSetIsMono(isMono); 395bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 396bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 397bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public void lightSetIsLocal(boolean isLocal) { 398bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams nLightSetIsLocal(isLocal); 399bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 400bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams 401bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams public Light lightCreate() { 402bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams int id = nLightCreate(); 403bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams return new Light(id); 404bba134c8a1dcfe0c8473307a95899a02c9553504Jason Sams } 40560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 40664676f3c21a07d650069315572811570cbf8f728Jason Sams ////////////////////////////////////////////////////////////////////////////////// 40764676f3c21a07d650069315572811570cbf8f728Jason Sams // File 40864676f3c21a07d650069315572811570cbf8f728Jason Sams 40964676f3c21a07d650069315572811570cbf8f728Jason Sams public class File extends BaseObj { 41064676f3c21a07d650069315572811570cbf8f728Jason Sams File(int id) { 41136e612a488511940b61f09803b270aa1c61b68e0Jason Sams super(RenderScript.this); 41264676f3c21a07d650069315572811570cbf8f728Jason Sams mID = id; 41364676f3c21a07d650069315572811570cbf8f728Jason Sams } 41464676f3c21a07d650069315572811570cbf8f728Jason Sams 41564676f3c21a07d650069315572811570cbf8f728Jason Sams public void destroy() { 41664676f3c21a07d650069315572811570cbf8f728Jason Sams //nLightDestroy(mID); 41764676f3c21a07d650069315572811570cbf8f728Jason Sams mID = 0; 41864676f3c21a07d650069315572811570cbf8f728Jason Sams } 41964676f3c21a07d650069315572811570cbf8f728Jason Sams } 42064676f3c21a07d650069315572811570cbf8f728Jason Sams 42164676f3c21a07d650069315572811570cbf8f728Jason Sams public File fileOpen(String s) throws IllegalStateException, IllegalArgumentException 42264676f3c21a07d650069315572811570cbf8f728Jason Sams { 42364676f3c21a07d650069315572811570cbf8f728Jason Sams if(s.length() < 1) { 42464676f3c21a07d650069315572811570cbf8f728Jason Sams throw new IllegalArgumentException("fileOpen does not accept a zero length string."); 42564676f3c21a07d650069315572811570cbf8f728Jason Sams } 42664676f3c21a07d650069315572811570cbf8f728Jason Sams 42764676f3c21a07d650069315572811570cbf8f728Jason Sams try { 42864676f3c21a07d650069315572811570cbf8f728Jason Sams byte[] bytes = s.getBytes("UTF-8"); 42964676f3c21a07d650069315572811570cbf8f728Jason Sams int id = nFileOpen(bytes); 43064676f3c21a07d650069315572811570cbf8f728Jason Sams return new File(id); 43164676f3c21a07d650069315572811570cbf8f728Jason Sams } catch (java.io.UnsupportedEncodingException e) { 43264676f3c21a07d650069315572811570cbf8f728Jason Sams throw new RuntimeException(e); 43364676f3c21a07d650069315572811570cbf8f728Jason Sams } 43464676f3c21a07d650069315572811570cbf8f728Jason Sams } 43564676f3c21a07d650069315572811570cbf8f728Jason Sams 43664676f3c21a07d650069315572811570cbf8f728Jason Sams 43760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich /////////////////////////////////////////////////////////////////////////////////// 43860aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich // Root state 43960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 44060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindRootScript(Script s) { 44160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindRootScript(s.mID); 44260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 44360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 44460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //public void contextBindSampler(Sampler s, int slot) { 44560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //nContextBindSampler(s.mID); 44660aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich //} 44760aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 44822534176fb5c1257130ef4ee589739ca42766a32Jason Sams public void contextBindProgramFragmentStore(ProgramStore pfs) { 44960aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragmentStore(pfs.mID); 45060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 45160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 45260aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich public void contextBindProgramFragment(ProgramFragment pf) { 45360aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich nContextBindProgramFragment(pf.mID); 45460aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich } 45560aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 4560826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams public void contextBindProgramVertex(ProgramVertex pf) { 4570826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams nContextBindProgramVertex(pf.mID); 4580826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams } 4590826a6f90f049bf94fc39fb23ad3a736a14b96ebJason Sams 46060aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich} 46160aa3eaf559b1410898c228e4f6ab7920f3953d0Jack Palevich 46236e612a488511940b61f09803b270aa1c61b68e0Jason Sams 463