1ebfb436a49673693b98469683451bd9ede797557Jason Sams/* 2ebfb436a49673693b98469683451bd9ede797557Jason Sams * Copyright (C) 2008 The Android Open Source Project 3ebfb436a49673693b98469683451bd9ede797557Jason Sams * 4ebfb436a49673693b98469683451bd9ede797557Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5ebfb436a49673693b98469683451bd9ede797557Jason Sams * you may not use this file except in compliance with the License. 6ebfb436a49673693b98469683451bd9ede797557Jason Sams * You may obtain a copy of the License at 7ebfb436a49673693b98469683451bd9ede797557Jason Sams * 8ebfb436a49673693b98469683451bd9ede797557Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9ebfb436a49673693b98469683451bd9ede797557Jason Sams * 10ebfb436a49673693b98469683451bd9ede797557Jason Sams * Unless required by applicable law or agreed to in writing, software 11ebfb436a49673693b98469683451bd9ede797557Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12ebfb436a49673693b98469683451bd9ede797557Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ebfb436a49673693b98469683451bd9ede797557Jason Sams * See the License for the specific language governing permissions and 14ebfb436a49673693b98469683451bd9ede797557Jason Sams * limitations under the License. 15ebfb436a49673693b98469683451bd9ede797557Jason Sams */ 16ebfb436a49673693b98469683451bd9ede797557Jason Sams 17ebfb436a49673693b98469683451bd9ede797557Jason Samspackage android.renderscript; 18ebfb436a49673693b98469683451bd9ede797557Jason Sams 19ebfb436a49673693b98469683451bd9ede797557Jason Sams 20ebfb436a49673693b98469683451bd9ede797557Jason Samsimport android.util.Log; 21ebfb436a49673693b98469683451bd9ede797557Jason Sams 22ebfb436a49673693b98469683451bd9ede797557Jason Sams 239c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 24a90842283e322b1210e2bea5850b05177e3d87afTim Murray * @hide 25d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 2611518acc8c416023d8c2192b441a1767205676d9Robert Ly * Program raster is primarily used to specify whether point sprites are enabled and to control 2711518acc8c416023d8c2192b441a1767205676d9Robert Ly * the culling mode. By default, back faces are culled. 28ebfb436a49673693b98469683451bd9ede797557Jason Sams **/ 29ebfb436a49673693b98469683451bd9ede797557Jason Samspublic class ProgramRaster extends BaseObj { 3080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 31d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 32d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 33d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 3480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk public enum CullMode { 35d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 36d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 37d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 3880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk BACK (0), 39d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 40d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 41d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 4280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk FRONT (1), 43d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 44d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 45d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams **/ 4680a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk NONE (2); 4780a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 4880a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk int mID; 4980a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk CullMode(int id) { 5080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mID = id; 5180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 5280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk } 5380a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 54ebfb436a49673693b98469683451bd9ede797557Jason Sams boolean mPointSprite; 5580a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk CullMode mCullMode; 56ebfb436a49673693b98469683451bd9ede797557Jason Sams 57ebfb436a49673693b98469683451bd9ede797557Jason Sams ProgramRaster(int id, RenderScript rs) { 580de9444aa6c25d2c586e8204a6168d10e67376e0Alex Sakhartchouk super(id, rs); 59ebfb436a49673693b98469683451bd9ede797557Jason Sams 60ebfb436a49673693b98469683451bd9ede797557Jason Sams mPointSprite = false; 6180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mCullMode = CullMode.BACK; 62ebfb436a49673693b98469683451bd9ede797557Jason Sams } 63ebfb436a49673693b98469683451bd9ede797557Jason Sams 649c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 65d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 66918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk * Specifies whether vertices are rendered as screen aligned 67918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk * elements of a specified size 687d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return whether point sprites are enabled 697d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 70918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk public boolean isPointSpriteEnabled() { 717d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mPointSprite; 727d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 737d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 749c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines /** 75d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 76918e840628a0b40a95fd42618f604ea5a44aebaeAlex Sakhartchouk * Specifies how triangles are culled based on their orientation 777d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk * @return cull mode 787d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk */ 797d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk public CullMode getCullMode() { 807d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return mCullMode; 817d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk } 827d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk 83d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 84d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 85d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 86d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public static ProgramRaster CULL_BACK(RenderScript rs) { 87d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk if(rs.mProgramRaster_CULL_BACK == null) { 88d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster.Builder builder = new ProgramRaster.Builder(rs); 89d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk builder.setCullMode(CullMode.BACK); 90d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk rs.mProgramRaster_CULL_BACK = builder.create(); 91d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 92d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return rs.mProgramRaster_CULL_BACK; 93d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 94d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 95d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 96d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 97d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 98d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public static ProgramRaster CULL_FRONT(RenderScript rs) { 99d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk if(rs.mProgramRaster_CULL_FRONT == null) { 100d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster.Builder builder = new ProgramRaster.Builder(rs); 101d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk builder.setCullMode(CullMode.FRONT); 102d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk rs.mProgramRaster_CULL_FRONT = builder.create(); 103d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 104d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return rs.mProgramRaster_CULL_FRONT; 105d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 106d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 107d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 108d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 109d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 110d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public static ProgramRaster CULL_NONE(RenderScript rs) { 111d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk if(rs.mProgramRaster_CULL_NONE == null) { 112d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk ProgramRaster.Builder builder = new ProgramRaster.Builder(rs); 113d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk builder.setCullMode(CullMode.NONE); 114d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk rs.mProgramRaster_CULL_NONE = builder.create(); 115d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 116d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return rs.mProgramRaster_CULL_NONE; 117d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 118d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 119d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 120d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 121d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 122ebfb436a49673693b98469683451bd9ede797557Jason Sams public static class Builder { 123ebfb436a49673693b98469683451bd9ede797557Jason Sams RenderScript mRS; 12480a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk boolean mPointSprite; 125d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk CullMode mCullMode; 126ebfb436a49673693b98469683451bd9ede797557Jason Sams 127d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 128d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 129d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 13080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk public Builder(RenderScript rs) { 13180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mRS = rs; 13280a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mPointSprite = false; 133d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk mCullMode = CullMode.BACK; 134ebfb436a49673693b98469683451bd9ede797557Jason Sams } 135ebfb436a49673693b98469683451bd9ede797557Jason Sams 136d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 137d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 138d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 139b4d7bb6872f523b4318144202e119766ed9054edAlex Sakhartchouk public Builder setPointSpriteEnabled(boolean enable) { 14080a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk mPointSprite = enable; 141288c8711a64893acb3f4a31caf69153be9809d17Jim Shuma return this; 142ebfb436a49673693b98469683451bd9ede797557Jason Sams } 143ebfb436a49673693b98469683451bd9ede797557Jason Sams 144d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 145d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 146d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 147d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk public Builder setCullMode(CullMode m) { 148d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk mCullMode = m; 149d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk return this; 150d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk } 151d36f248eaf06c569010649902df653da1a9e2accAlex Sakhartchouk 152d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams /** 153d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams * @deprecated in API 16 154d4ca9910982853e50429ea9233f2150ca619b3d8Jason Sams */ 155ebfb436a49673693b98469683451bd9ede797557Jason Sams public ProgramRaster create() { 156771bebb94054d06f97284379c93a2620613513c3Jason Sams mRS.validate(); 15794aaed38467c71a6c804f0e18b41346a4013c25bJason Sams int id = mRS.nProgramRasterCreate(mPointSprite, mCullMode.mID); 1587d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk ProgramRaster programRaster = new ProgramRaster(id, mRS); 1597d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk programRaster.mPointSprite = mPointSprite; 1607d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk programRaster.mCullMode = mCullMode; 1617d5f5e7c8943e043a422ad51c85d4e1684c37e28Alex Sakhartchouk return programRaster; 162ebfb436a49673693b98469683451bd9ede797557Jason Sams } 163ebfb436a49673693b98469683451bd9ede797557Jason Sams } 164ebfb436a49673693b98469683451bd9ede797557Jason Sams 165ebfb436a49673693b98469683451bd9ede797557Jason Sams} 166ebfb436a49673693b98469683451bd9ede797557Jason Sams 167ebfb436a49673693b98469683451bd9ede797557Jason Sams 168ebfb436a49673693b98469683451bd9ede797557Jason Sams 169ebfb436a49673693b98469683451bd9ede797557Jason Sams 170ebfb436a49673693b98469683451bd9ede797557Jason Sams 17180a4c2cd34aedb4f1a2e5e7d1ac26a9aeebe41aeAlex Sakhartchouk 172