⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shaderattributevalueretained.java

📁 JAVA3D矩陈的相关类
💻 JAVA
字号:
/* * $RCSfile: ShaderAttributeValueRetained.java,v $ * * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. * * Use is subject to license terms. * * $Revision: 1.6 $ * $Date: 2007/04/12 17:34:06 $ * $State: Exp $ */package javax.media.j3d;import javax.vecmath.*;/** * The ShaderAttributeValueRetained object encapsulates a uniform shader * attribute whose value is specified explicitly. */class ShaderAttributeValueRetained extends ShaderAttributeObjectRetained {    ShaderAttributeValueRetained() {    }        synchronized void createMirrorObject() {	// System.err.println("ShaderAttributeValueRetained : createMirrorObject");        // This method should only call by setLive().	if (mirror == null) {            ShaderAttributeValueRetained mirrorSAV = new ShaderAttributeValueRetained();            mirrorSAV.createObjectData(getValue());	    mirror = mirrorSAV;	    mirror.source = source;	}	initMirrorObject();    }    /**     * Computes the base class from the specified object. A     * ClassCastException is thrown if the object is not an instance     * of one of the allowed classes.     */    int computeClassType(Object value) {	Class objClass = value.getClass();	if (objClass.isArray()) {	    throw new ClassCastException(objClass + " -- array class not allowed");	}	for (int i = 0; i < classTable.length; i++) {	    if (classTable[i].isInstance(value)) {		return i;	    }	}	throw new ClassCastException(objClass + " -- unrecognized class");    }    /**     * Returns the base class represented by the specified class type.     */    Class getBaseClass(int classType) {	return classTable[classType];    }    /**     * Creates an attribute wrapper object of the specified class     * type, and stores the specified object.     */    AttrWrapper createAttrWrapper(Object value, int classType) {	ValueWrapper attrWrapper = null;	switch (classType) {	case TYPE_INTEGER:	    attrWrapper = new IntegerWrapper();	    break;	case TYPE_FLOAT:	    attrWrapper = new FloatWrapper();	    break;//	case TYPE_DOUBLE://	    attrWrapper = new DoubleWrapper();//	    break;	case TYPE_TUPLE2I:	    attrWrapper = new Tuple2iWrapper();	    break;	case TYPE_TUPLE2F:	    attrWrapper = new Tuple2fWrapper();	    break;//	case TYPE_TUPLE2D://	    attrWrapper = new Tuple2dWrapper();//	    break;	case TYPE_TUPLE3I:	    attrWrapper = new Tuple3iWrapper();	    break;	case TYPE_TUPLE3F:	    attrWrapper = new Tuple3fWrapper();	    break;//	case TYPE_TUPLE3D://	    attrWrapper = new Tuple3dWrapper();//	    break;	case TYPE_TUPLE4I:	    attrWrapper = new Tuple4iWrapper();	    break;	case TYPE_TUPLE4F:	    attrWrapper = new Tuple4fWrapper();	    break;//	case TYPE_TUPLE4D://	    attrWrapper = new Tuple4dWrapper();//	    break;	case TYPE_MATRIX3F:	    attrWrapper = new Matrix3fWrapper();	    break;//	case TYPE_MATRIX3D://	    attrWrapper = new Matrix3dWrapper();//	    break;	case TYPE_MATRIX4F:	    attrWrapper = new Matrix4fWrapper();	    break;//	case TYPE_MATRIX4D://	    attrWrapper = new Matrix4dWrapper();//	    break;	default:	    // Should never get here	    assert false;	    return null;	}	attrWrapper.set(value);	return attrWrapper;    }    //    // The following wrapper classes are used to store a copy of the    // user-specified shader attribute value. There is a wrapper class    // for each supported base class.    //    // Base wrapper class for non-array attribute types    static abstract class ValueWrapper extends AttrWrapper {	// No additional fields or methods are defined in this class    }    // Wrapper class for Integer    static class IntegerWrapper extends ValueWrapper {	private int[] value = new int[1];	void set(Object value) {	    this.value[0] = ((Integer)value).intValue();	}	Object get() {	    return new Integer(this.value[0]);	}	Object getRef() {	    return this.value;	}    }    // Wrapper class for Float    static class FloatWrapper extends ValueWrapper {	private float[] value = new float[1];	void set(Object value) {	    this.value[0] = ((Float)value).floatValue();	}	Object get() {	    return new Float(this.value[0]);	}	Object getRef() {	    return this.value;	}    }    /*    // Wrapper class for Double    static class DoubleWrapper extends ValueWrapper {	private double[] value = new double[1];	void set(Object value) {	    this.value[0] = ((Double)value).doubleValue();	}	Object get() {	    return new Double(value[0]);	}	Object getRef() {	    return value;	}    }    */    // Wrapper class for Tuple2i    static class Tuple2iWrapper extends ValueWrapper {	private int[] value = new int[2];	void set(Object value) {	    ((Tuple2i)value).get(this.value);	}	Object get() {	    return new Point2i(value);	}	Object getRef() {	    return value;	}    }    // Wrapper class for Tuple2f    static class Tuple2fWrapper extends ValueWrapper {	private float[] value = new float[2];	void set(Object value) {	    ((Tuple2f)value).get(this.value);	}	Object get() {	    return new Point2f(value);	}	Object getRef() {	    return value;	}    }    /*    // Wrapper class for Tuple2d    static class Tuple2dWrapper extends ValueWrapper {	private double[] value = new double[2];	void set(Object value) {	    ((Tuple2d)value).get(this.value);	}	Object get() {	    return new Point2d(value);	}	Object getRef() {	    return value;	}    }    */    // Wrapper class for Tuple3i    static class Tuple3iWrapper extends ValueWrapper {	private int[] value = new int[3];	void set(Object value) {	    ((Tuple3i)value).get(this.value);	}	Object get() {	    return new Point3i(value);	}	Object getRef() {	    return value;	}    }    // Wrapper class for Tuple3f    static class Tuple3fWrapper extends ValueWrapper {	private float[] value = new float[3];	void set(Object value) {	    ((Tuple3f)value).get(this.value);	}	Object get() {	    return new Point3f(value);	}	Object getRef() {	    return value;	}    }    /*    // Wrapper class for Tuple3d    static class Tuple3dWrapper extends ValueWrapper {	private double[] value = new double[3];	void set(Object value) {	    ((Tuple3d)value).get(this.value);	}	Object get() {	    return new Point3d(value);	}	Object getRef() {	    return value;	}    }    */    // Wrapper class for Tuple4i    static class Tuple4iWrapper extends ValueWrapper {	private int[] value = new int[4];	void set(Object value) {	    ((Tuple4i)value).get(this.value);	}	Object get() {	    return new Point4i(value);	}	Object getRef() {	    return value;	}    }    // Wrapper class for Tuple4f    static class Tuple4fWrapper extends ValueWrapper {	private float[] value = new float[4];	void set(Object value) {	    ((Tuple4f)value).get(this.value);	}	Object get() {	    return new Point4f(value);	}	Object getRef() {	    return value;	}    }    /*    // Wrapper class for Tuple4d    static class Tuple4dWrapper extends ValueWrapper {	private double[] value = new double[4];	void set(Object value) {	    ((Tuple4d)value).get(this.value);	}	Object get() {	    return new Point4d(value);	}	Object getRef() {	    return value;	}    }    */    // Wrapper class for Matrix3f    static class Matrix3fWrapper extends ValueWrapper {	private float[] value = new float[9];	void set(Object value) {	    Matrix3f m = (Matrix3f)value;	    this.value[0] = m.m00;	    this.value[1] = m.m01;	    this.value[2] = m.m02;	    this.value[3] = m.m10;	    this.value[4] = m.m11;	    this.value[5] = m.m12;	    this.value[6] = m.m20;	    this.value[7] = m.m21;	    this.value[8] = m.m22;	}	Object get() {	    return new Matrix3f(value);	}	Object getRef() {	    return value;	}    }    /*    // Wrapper class for Matrix3d    static class Matrix3dWrapper extends ValueWrapper {	private double[] value = new double[9];	void set(Object value) {	    Matrix3d m = (Matrix3d)value;	    this.value[0] = m.m00;	    this.value[1] = m.m01;	    this.value[2] = m.m02;	    this.value[3] = m.m10;	    this.value[4] = m.m11;	    this.value[5] = m.m12;	    this.value[6] = m.m20;	    this.value[7] = m.m21;	    this.value[8] = m.m22;	}	Object get() {	    return new Matrix3d(value);	}	Object getRef() {	    return value;	}    }    */    // Wrapper class for Matrix4f    static class Matrix4fWrapper extends ValueWrapper {	private float[] value = new float[16];	void set(Object value) {	    Matrix4f m = (Matrix4f)value;	    this.value[0]  = m.m00;	    this.value[1]  = m.m01;	    this.value[2]  = m.m02;	    this.value[3]  = m.m03;	    this.value[4]  = m.m10;	    this.value[5]  = m.m11;	    this.value[6]  = m.m12;	    this.value[7]  = m.m13;	    this.value[8]  = m.m20;	    this.value[9]  = m.m21;	    this.value[10] = m.m22;	    this.value[11] = m.m23;	    this.value[12] = m.m30;	    this.value[13] = m.m31;	    this.value[14] = m.m32;	    this.value[15] = m.m33;	}	Object get() {	    return new Matrix4f(value);	}	Object getRef() {	    return value;	}    }    /*    // Wrapper class for Matrix4d    static class Matrix4dWrapper extends ValueWrapper {	private double[] value = new double[16];	void set(Object value) {	    Matrix4d m = (Matrix4d)value;	    this.value[0]  = m.m00;	    this.value[1]  = m.m01;	    this.value[2]  = m.m02;	    this.value[3]  = m.m03;	    this.value[4]  = m.m10;	    this.value[5]  = m.m11;	    this.value[6]  = m.m12;	    this.value[7]  = m.m13;	    this.value[8]  = m.m20;	    this.value[9]  = m.m21;	    this.value[10] = m.m22;	    this.value[11] = m.m23;	    this.value[12] = m.m30;	    this.value[13] = m.m31;	    this.value[14] = m.m32;	    this.value[15] = m.m33;	}	Object get() {	    return new Matrix4d(value);	}	Object getRef() {	    return value;	}    }    */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -