summaryrefslogtreecommitdiffstats
path: root/graphics/java/android/renderscript/ProgramRaster.java
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/java/android/renderscript/ProgramRaster.java')
-rw-r--r--graphics/java/android/renderscript/ProgramRaster.java100
1 files changed, 64 insertions, 36 deletions
diff --git a/graphics/java/android/renderscript/ProgramRaster.java b/graphics/java/android/renderscript/ProgramRaster.java
index 56f9bf4..b89d36d 100644
--- a/graphics/java/android/renderscript/ProgramRaster.java
+++ b/graphics/java/android/renderscript/ProgramRaster.java
@@ -22,80 +22,107 @@ import android.util.Log;
/**
- * @hide
- *
+ * Program raster is primarily used to specify whether point sprites are enabled and to control
+ * the culling mode. By default, back faces are culled.
**/
public class ProgramRaster extends BaseObj {
+
+ public enum CullMode {
+ BACK (0),
+ FRONT (1),
+ NONE (2);
+
+ int mID;
+ CullMode(int id) {
+ mID = id;
+ }
+ }
+
boolean mPointSmooth;
boolean mLineSmooth;
boolean mPointSprite;
- float mPointSize;
float mLineWidth;
- Element mIn;
- Element mOut;
+ CullMode mCullMode;
ProgramRaster(int id, RenderScript rs) {
- super(rs);
- mID = id;
+ super(id, rs);
- mPointSize = 1.0f;
mLineWidth = 1.0f;
mPointSmooth = false;
mLineSmooth = false;
mPointSprite = false;
+
+ mCullMode = CullMode.BACK;
}
- public void setLineWidth(float w) {
+ void setLineWidth(float w) {
mRS.validate();
mLineWidth = w;
- mRS.nProgramRasterSetLineWidth(mID, w);
+ mRS.nProgramRasterSetLineWidth(getID(), w);
}
- public void setPointSize(float s) {
+ void setCullMode(CullMode m) {
mRS.validate();
- mPointSize = s;
- mRS.nProgramRasterSetPointSize(mID, s);
+ mCullMode = m;
+ mRS.nProgramRasterSetCullMode(getID(), m.mID);
}
- void internalInit() {
- int inID = 0;
- int outID = 0;
- if (mIn != null) {
- inID = mIn.mID;
+ public static ProgramRaster CULL_BACK(RenderScript rs) {
+ if(rs.mProgramRaster_CULL_BACK == null) {
+ ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
+ builder.setCullMode(CullMode.BACK);
+ rs.mProgramRaster_CULL_BACK = builder.create();
}
- if (mOut != null) {
- outID = mOut.mID;
+ return rs.mProgramRaster_CULL_BACK;
+ }
+
+ public static ProgramRaster CULL_FRONT(RenderScript rs) {
+ if(rs.mProgramRaster_CULL_FRONT == null) {
+ ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
+ builder.setCullMode(CullMode.FRONT);
+ rs.mProgramRaster_CULL_FRONT = builder.create();
}
- mID = mRS.nProgramRasterCreate(inID, outID, mPointSmooth, mLineSmooth, mPointSprite);
+ return rs.mProgramRaster_CULL_FRONT;
}
+ public static ProgramRaster CULL_NONE(RenderScript rs) {
+ if(rs.mProgramRaster_CULL_NONE == null) {
+ ProgramRaster.Builder builder = new ProgramRaster.Builder(rs);
+ builder.setCullMode(CullMode.NONE);
+ rs.mProgramRaster_CULL_NONE = builder.create();
+ }
+ return rs.mProgramRaster_CULL_NONE;
+ }
public static class Builder {
RenderScript mRS;
- ProgramRaster mPR;
+ boolean mPointSprite;
+ boolean mPointSmooth;
+ boolean mLineSmooth;
+ CullMode mCullMode;
- public Builder(RenderScript rs, Element in, Element out) {
+ public Builder(RenderScript rs) {
mRS = rs;
- mPR = new ProgramRaster(0, rs);
+ mPointSmooth = false;
+ mLineSmooth = false;
+ mPointSprite = false;
+ mCullMode = CullMode.BACK;
}
- public void setPointSpriteEnable(boolean enable) {
- mPR.mPointSprite = enable;
+ public Builder setPointSpriteEnabled(boolean enable) {
+ mPointSprite = enable;
+ return this;
}
- public void setPointSmoothEnable(boolean enable) {
- mPR.mPointSmooth = enable;
+ public Builder setCullMode(CullMode m) {
+ mCullMode = m;
+ return this;
}
- public void setLineSmoothEnable(boolean enable) {
- mPR.mLineSmooth = enable;
- }
-
-
static synchronized ProgramRaster internalCreate(RenderScript rs, Builder b) {
- b.mPR.internalInit();
- ProgramRaster pr = b.mPR;
- b.mPR = new ProgramRaster(0, b.mRS);
+ int id = rs.nProgramRasterCreate(b.mPointSmooth, b.mLineSmooth, b.mPointSprite);
+ ProgramRaster pr = new ProgramRaster(id, rs);
+ pr.setCullMode(b.mCullMode);
return pr;
}
@@ -111,3 +138,4 @@ public class ProgramRaster extends BaseObj {
+