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

📄 indexedgeometryarrayretained.java

📁 JAVA3D矩陈的相关类
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		//	    System.err.println("by-copy");		synchronized (this) {		    cdirty = dirtyFlag;		    if (updateAlpha && !ignoreVertexColors) {			// update the alpha values			retVal = updateAlphaInVertexData(cv, screen, alpha);			useAlpha = (retVal[0] == Boolean.TRUE);			vdata = (float[])retVal[1];			// D3D only			if (alpha != lastScreenAlpha) {			    // handle multiple screen case			    lastScreenAlpha = alpha;			    cdirty |= COLOR_CHANGED;			}		    } else {			vdata = vertexData;			// if transparency switch between on/off			if (lastScreenAlpha != -1) {			    lastScreenAlpha = -1;			    cdirty |= COLOR_CHANGED;			}		    }		    // geomLock is get in MasterControl when		    // RenderBin render the geometry. So it is safe		    // just to set the dirty flag here		    dirtyFlag = 0;                }                Pipeline.getPipeline().executeIndexedGeometry(cv.ctx,                        this, geoType, isNonUniformScale,                        useAlpha,                        ignoreVertexColors,                        initialIndexIndex,                        validIndexCount,                        // Vertex Count is maxCoordIndex + 1                        maxCoordIndex + 1,                        ((vertexFormat & GeometryArray.COLOR) != 0)?(vertexFormat|GeometryArray.COLOR_4):vertexFormat,                        vertexAttrCount, vertexAttrSizes,                        texCoordSetCount, texCoordSetMap,                        (texCoordSetMap == null) ? 0 : texCoordSetMap.length,                        texCoordSetMapOffset,                        cv.numActiveTexUnit,                        vdata, null,                        cdirty, indexCoord);	    } // end of non by reference	    else if ((vertexFormat & GeometryArray.INTERLEAVED) != 0) {		if(interLeavedVertexData == null)		    return;		float[] cdata = null;		synchronized (this) {		    cdirty = dirtyFlag;		    if (updateAlpha && !ignoreVertexColors) {			// update the alpha values			retVal = updateAlphaInInterLeavedData(cv, screen, alpha);			useAlpha = (retVal[0] == Boolean.TRUE);			cdata = (float[])retVal[1];			if (alpha != lastScreenAlpha) { 			    lastScreenAlpha = alpha;			    cdirty |= COLOR_CHANGED;			}		    } else {			// if transparency switch between on/off			if (lastScreenAlpha != -1) {			    lastScreenAlpha = -1;			    cdirty |= COLOR_CHANGED;			}		    }		    dirtyFlag = 0;		}                Pipeline.getPipeline().executeIndexedGeometry(cv.ctx,                        this, geoType, isNonUniformScale,                        useAlpha,                        ignoreVertexColors,                        initialIndexIndex,                        validIndexCount,                        maxCoordIndex + 1,                        vertexFormat,                        vertexAttrCount, vertexAttrSizes,                        texCoordSetCount, texCoordSetMap,                        (texCoordSetMap == null) ? 0 : texCoordSetMap.length,                        texCoordSetMapOffset,                        cv.numActiveTexUnit,                        interLeavedVertexData, cdata,                        cdirty, indexCoord);	    }  //end of interleaved	    else {                // Check if a vertexformat is set, but the array is null		// if yes, don't draw anything		if ((vertexType == 0) ||		    ((vertexType & VERTEX_DEFINED) == 0) ||		    (((vertexFormat & GeometryArray.COLOR) != 0) &&		     (vertexType & COLOR_DEFINED) == 0) ||		    (((vertexFormat & GeometryArray.NORMALS) != 0) &&		     (vertexType & NORMAL_DEFINED) == 0) ||		    (((vertexFormat & GeometryArray.VERTEX_ATTRIBUTES) != 0) &&		     (vertexType & VATTR_DEFINED) == 0) ||		    (((vertexFormat& GeometryArray.TEXTURE_COORDINATE) != 0) &&		     (vertexType & TEXCOORD_DEFINED) == 0)) {		    return;  		} else {		    byte[] cbdata = null;		    float[] cfdata = null;		    		    if ((vertexType & (CF | C3F | C4F )) != 0) {			synchronized (this) {			    cdirty = dirtyFlag;			    if (updateAlpha && !ignoreVertexColors) {				cfdata = updateAlphaInFloatRefColors(cv,								     screen, alpha);				if (alpha != lastScreenAlpha) {				    lastScreenAlpha = alpha;				    cdirty |= COLOR_CHANGED;				}			    } else {				cfdata = mirrorFloatRefColors[0];				// if transparency switch between on/off				if (lastScreenAlpha != -1) {				    lastScreenAlpha = -1;				    cdirty |= COLOR_CHANGED;				}			    			    }			    dirtyFlag = 0;			}		    } else if ((vertexType & (CUB| C3UB | C4UB)) != 0) {			synchronized (this) {			    cdirty = dirtyFlag;			    if (updateAlpha && !ignoreVertexColors) {				cbdata = updateAlphaInByteRefColors(								    cv, screen, alpha);				if (alpha != lastScreenAlpha) {				    lastScreenAlpha = alpha;				    cdirty |= COLOR_CHANGED;				}			    } else {				cbdata = mirrorUnsignedByteRefColors[0];				// if transparency switch between on/off				if (lastScreenAlpha != -1) {				    lastScreenAlpha = -1;				    cdirty |= COLOR_CHANGED;				}			    }			    dirtyFlag = 0;			}		    } else {			cdirty = dirtyFlag;		    }		    		    int vdefined = 0;		    if((vertexType & (PF | P3F)) != 0)			vdefined |= COORD_FLOAT;		    if((vertexType & (PD | P3D)) != 0)			vdefined |= COORD_DOUBLE;		    if((vertexType & (CF | C3F | C4F)) != 0)			vdefined |= COLOR_FLOAT;		    if((vertexType & (CUB| C3UB | C4UB)) != 0)			vdefined |= COLOR_BYTE;		    if((vertexType & NORMAL_DEFINED) != 0)			vdefined |= NORMAL_FLOAT;                    if((vertexType & VATTR_DEFINED) != 0)                        vdefined |= VATTR_FLOAT;                    if((vertexType & TEXCOORD_DEFINED) != 0)                        vdefined |= TEXCOORD_FLOAT;                    Pipeline.getPipeline().executeIndexedGeometryVA(cv.ctx,                            this, geoType, isNonUniformScale,                            ignoreVertexColors,                            initialIndexIndex,                            validIndexCount,                            maxCoordIndex + 1,                            (vertexFormat | c4fAllocated),                            vdefined,                            mirrorFloatRefCoords, mirrorDoubleRefCoords,                            cfdata, cbdata,                            mirrorFloatRefNormals,                            vertexAttrCount, vertexAttrSizes,                            mirrorFloatRefVertexAttrs,                            ((texCoordSetMap == null) ? 0:texCoordSetMap.length),                            texCoordSetMap,                            cv.numActiveTexUnit,                            texCoordStride,                            mirrorRefTexCoords, cdirty, indexCoord);                }	    } // end of non interleaved and by reference	}//end of non io buffer	else {	    if ((vertexFormat & GeometryArray.INTERLEAVED) != 0) {		if( interleavedFloatBufferImpl == null)		    return;				float[] cdata = null;		synchronized (this) {		    cdirty = dirtyFlag;		    if (updateAlpha && !ignoreVertexColors) {			// update the alpha values			retVal = updateAlphaInInterLeavedData(cv, screen, alpha);			useAlpha = (retVal[0] == Boolean.TRUE);			cdata = (float[])retVal[1];			if (alpha != lastScreenAlpha) { 			    lastScreenAlpha = alpha;			    cdirty |= COLOR_CHANGED;			}		    } else {			// if transparency switch between on/off			if (lastScreenAlpha != -1) {			    lastScreenAlpha = -1;			    cdirty |= COLOR_CHANGED;			}		    }		    dirtyFlag = 0;		}		                Pipeline.getPipeline().executeIndexedGeometryBuffer(cv.ctx,                        this, geoType, isNonUniformScale,                        useAlpha,                        ignoreVertexColors,                        initialIndexIndex,                        validIndexCount,                        maxCoordIndex + 1,                        vertexFormat,                        texCoordSetCount, texCoordSetMap,                        (texCoordSetMap == null) ? 0 : texCoordSetMap.length,                        texCoordSetMapOffset,                        cv.numActiveTexUnit,                        interleavedFloatBufferImpl.getBufferAsObject(), cdata,                        cdirty, indexCoord);	    }  //end of interleaved	    else {                // Check if a vertexformat is set, but the array is null		// if yes, don't draw anything		if ((vertexType == 0) ||		    ((vertexType & VERTEX_DEFINED) == 0) ||		    (((vertexFormat & GeometryArray.COLOR) != 0) &&		     (vertexType & COLOR_DEFINED) == 0) ||		    (((vertexFormat & GeometryArray.NORMALS) != 0) &&		     (vertexType & NORMAL_DEFINED) == 0) ||		    (((vertexFormat & GeometryArray.VERTEX_ATTRIBUTES) != 0) &&		     (vertexType & VATTR_DEFINED) == 0) ||		    (((vertexFormat& GeometryArray.TEXTURE_COORDINATE) != 0) &&		     (vertexType & TEXCOORD_DEFINED) == 0)) {		    return;  		} else {		    byte[] cbdata = null;		    float[] cfdata = null;		    		    if ((vertexType & CF ) != 0) {			synchronized (this) {			    cdirty = dirtyFlag;			    if (updateAlpha && !ignoreVertexColors) {				cfdata = updateAlphaInFloatRefColors(cv,								     screen, alpha);				if (alpha != lastScreenAlpha) {				    lastScreenAlpha = alpha;				    cdirty |= COLOR_CHANGED;				}			    } else {				// XXXX: handle transparency case				//cfdata = null;				cfdata = mirrorFloatRefColors[0];				// if transparency switch between on/off				if (lastScreenAlpha != -1) {				    lastScreenAlpha = -1;				    cdirty |= COLOR_CHANGED;				}			    			    }			    dirtyFlag = 0;			}		    } else if ((vertexType & CUB ) != 0) {			synchronized (this) {			    cdirty = dirtyFlag;			    if (updateAlpha && !ignoreVertexColors) {				cbdata = updateAlphaInByteRefColors(								    cv, screen, alpha);				if (alpha != lastScreenAlpha) {				    lastScreenAlpha = alpha;				    cdirty |= COLOR_CHANGED;				}			    } else {				// XXXX: handle transparency case				// cbdata = null;				cbdata = mirrorUnsignedByteRefColors[0];				// if transparency switch between on/off				if (lastScreenAlpha != -1) {				    lastScreenAlpha = -1;				    cdirty |= COLOR_CHANGED;				}			    }			    dirtyFlag = 0;			}		    } else {			cdirty = dirtyFlag;		    }		    Object vcoord = null, cdataBuffer=null, normal=null;		    		    int vdefined = 0;		    if((vertexType & PF)  != 0) {			vdefined |= COORD_FLOAT;			vcoord = floatBufferRefCoords.getBufferAsObject();		    } else if((vertexType & PD ) != 0) {			vdefined |= COORD_DOUBLE;			vcoord = doubleBufferRefCoords.getBufferAsObject();		    }		    if((vertexType & CF ) != 0) {			vdefined |= COLOR_FLOAT;			cdataBuffer = floatBufferRefColors.getBufferAsObject();		    } else if((vertexType & CUB) != 0) {			vdefined |= COLOR_BYTE;			cdataBuffer = byteBufferRefColors.getBufferAsObject();		    }		    		    if((vertexType & NORMAL_DEFINED) != 0) {			vdefined |= NORMAL_FLOAT;			normal = floatBufferRefNormals.getBufferAsObject();		    }                    if ((vertexType & VATTR_DEFINED) != 0) {                       vdefined |= VATTR_FLOAT;                    }                    if ((vertexType & TEXCOORD_DEFINED) != 0) {                       vdefined |= TEXCOORD_FLOAT;                    }                    Pipeline.getPipeline().executeIndexedGeometryVABuffer(cv.ctx,                            this, geoType, isNonUniformScale,                            ignoreVertexColors,                            initialIndexIndex,                            validIndexCount,                            maxCoordIndex + 1,                            (vertexFormat | c4fAllocated),                            vdefined,                            vcoord,                            cdataBuffer,                            cfdata, cbdata,                            normal,                            vertexAttrCount, vertexAttrSizes,                            nioFloatBufferRefVertexAttrs,                            ((texCoordSetMap == null) ? 0:texCoordSetMap.length),                            texCoordSetMap,                            cv.numActiveTexUnit,                            texCoordStride,                            refTexCoords, cdirty, indexCoord);		}	    } // end of non interleaved and by reference	} // end of nio buffer    }    void buildGA(Canvas3D cv, RenderAtom ra, boolean isNonUniformScale, 		 boolean updateAlpha, float alpha, boolean ignoreVertexColors,		 Transform3D xform, Transform3D nxform) {	int cdirty;	boolean useAlpha = false;	Object[] retVal;	if (mirrorGeometry != null) {	    ((GeometryArrayRetained)mirrorGeometry).buildGA(cv, ra, isNonUniformScale, updateAlpha, alpha,		    ignoreVertexColors, xform, nxform);	}	else {

⌨️ 快捷键说明

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